js代码

js调试技巧

余生颓废 提交于 2019-12-20 19:37:42
浏览器调试OK —> node 缺啥补啥 —> Python调用 JS代码。 一、浏览器调试 以github的RSA加密为例来进行调试。 github 地址: https://github.com/travist/jsencrypt/blob/master/bin/jsencrypt.js 打开谷歌浏览器,输入网址回车,按F12 ,选择 Sources 面板 单击左侧的 “+ New snippet”,新建一个 snippet,如图: 当然,并于区分,你可以重命名,我这里将其重命名为 rsa, 并将 github上面的rsa代码 复制到右边的编辑框内,注意按 Ctrl + S 进行保存 ,复制的时候如果用的是ctrl+a,那么记得检查一下开头和末尾是不是复制了多余的东西: 按如下操作,将代码运行起来: 运行结果: 啥也没有,那是因为这段代码 没有在控制台上有输出,因此不会显示什么。 现在我们可以来使用这个rsa加密函数: rsa加密大家自行百度一下 设置 publicKey,下图是某网站上的key: 我们也一样的调用 setPublicKey(设置公钥e1)进行设置: 然后就可以进行 加密了: 显示出了结果,一切是如此的简单,至于node里面怎么使用这段代码,当然是 缺啥补啥了(也就一个 window对象 和一个 浏览器对象 ),调通后,以后遇到RSA加密(不包括变种RSA)

js并行加载,顺序执行

ε祈祈猫儿з 提交于 2019-12-20 18:56:25
js并行加载,顺序执行 <script>运行脚本或加载外部文件时,会阻塞页面渲染,阻塞其他资源的加载。如果页面中需要加载多个js文件,在古老浏览器中性能会比较糟糕。 因此有了最原始的优化原则: 把脚本放在底部 。 如何实现js非阻塞、并行加载,甚至能保持执行顺序呢?各浏览器表现如何?站在巨人的肩膀上, Kyle Simpson 、 Nicholas C. Zakas 和 Steve Souders 对此有过总结和方案。 背景 1. Script DOM Element。 动态插入<script>,不会阻塞,但无法保持执行顺序。但唯有Firefox可以保持执行顺序,但也差点在Firefox 4 nightly的版本中去掉这个特性。 2. HTML5 async 非阻塞,加载完后立即执行,不保证顺序。这个属性不管有没有值、值为true或false,都是等同的效果(由于Kyle的推进,不能保证执行顺序与其值无关了)。 Google Analytics的新版嵌入代码就结合使用了上面两个方案,如: 1 2 3 4 5 6 7 8 var ga = document.createElement( 'script' ); ga.type = 'text/javascript' ; ga.async = true ; ga.src = ( 'https:' == document.location

web页面响应布局

随声附和 提交于 2019-12-20 18:14:49
原文 by zhangxinxu from http://www.zhangxinxu.com 我一直有一个想法就是把张鑫旭的所有文章弄到我的博客园上,但是想法一直存在,一直都在,行动越迟迟不肯配合,有那么一句话,没有行动的计划只会毁了你,亲,我不想给自己计划了,随心所遇吧,附一张图,激励我自己,也激励那些跟我一样的人。 固定布局就是个屎 ,我要投奔流体布局!如果你一直都是流体布局的,自己心里也默念三遍:流体布局就是个屎 ,我要投奔固定布局!如果你固定/流体布局兼修,自己心里也默念三遍:什么固定/流体布局都是屎 ,我要投奔时髦的响应布局! 看到张鑫旭这句话时,我就没放在心上,想着在响应布局早着呢,难维护,兼容又差,现在没想到,已经迫在眉睫,赶紧恶补下 以下内容你可以直接到张鑫旭的博客上看,顶部有博客链接,底部有具体本章链接,他本人写的简单易懂还实用并且幽默附有dome等等,我自己的纯属于练文采,做笔记用 响应式不句就是根据窗口的大小做相应的布局 应运而生的web页面响应布局 zxx的做法是在连入css的就把不同宽度的局部放在不同的css中 <link rel="stylesheet" type="text/css" href="normalScreen.css" media="screen and (max-width: 1024px)" /> <link rel=

资深工程师论web前端开发:关于JavaScript到底该如何学习

风流意气都作罢 提交于 2019-12-20 16:19:39
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1,不要着急看一些复杂网页效果的代码,这样除了打击你自信心,什么也学不到。没达到一定的武功水平,割了小JJ也学不会葵花宝典的。 2,别急着加技术交流QQ群,加牛人QQ。如果你找张三丰交流武功,你上去第一句问“丰哥,where is 丹田?”,你会被他一掌劈死的。 3,看网上什么多少天精通JS,啥啥啥从入门到精通,这种教程直接跳过吧,太多的事实证明,以一种浮躁的心态去做任何事都会以失败而告终。 推荐几本好书 “你丫吹了半天牛B,还是没说怎么学啊” 呵呵,我也没啥特别的办法,只是推荐几本好书。推荐的书,得按先后顺序看。别第一本没看完,就急着上第二本,并不是每次“穿越”都能成功的 第一阶段:《JavaScript DOM编程艺术》 看这本书之前,请先确认您对Javascript有个基本的了解,应该知道if else之类的语法,如果不懂,先去看看我第二阶段推荐的《Javascript高级程序设计》的前三章,记住看三章就别往下看了,回到《JavaScript DOM编程艺术》这本书上来。 学习Javascript用《JavaScript DOM编程艺术》来入门最好不过了,老老实实看两遍,看完了你就会对JS有一个大概的了解,整本书都围绕着一个网页效果例子展开,你跟着老老实实敲一篇,敲完之后

http及浏览器相关知识点归纳

走远了吗. 提交于 2019-12-20 10:27:06
http是应用层协议,采用请求/响应模型 1、浏览器地址栏输入URL地址后发生了什么? 浏览器判断地址是否是合理的URL地址,是否是http协议请求,如果是则进入下一步 浏览器对此URL进行缓存检查:如果存在缓存则从本地提取文件(from memory cache,返回200),如果缓存过期或缓存不存在,则发起远程请求 向DNS服务器发送请求,解析URL对应的IP地址 客户端根据IP地址,连同cookie、userAgent等信息向web服务器发送请求,经过三次握手建立TCP连接 客户端向服务器端发送http请求,该请求作为TCP三次握手的第三个报文的数据发送给服务器 ngnix根据URL做服务分发,分发到后端服务器或者是静态资源服务器, 首屏请求一般是分发到静态服务器返回一个html 服务器端处理请求返回http响应报文,如果浏览器访问过该页面,缓存上有对应的资源,与服务器最后修改记录对比,一致返回304,否则返回200和对应资源 如果是200无缓存,则浏览器接收到信息并开始下载该html文件;如果是304有缓存,则浏览器从本地提取文件 释放TCP连接 浏览器解析该html文本并显示内容,同时使用和设置缓存 补充: 浏览器渲染引擎工作流程: 解析html构建DOM树时,渲染引擎会将html文件的标签元素解析成多个DOM元素对象节点,并且将这些节点根据父子关系组成一个树结构

原生JS判断密码强弱

我只是一个虾纸丫 提交于 2019-12-20 10:22:12
前些天工作中有这个需求,自己手写了相关的JS代码,第一种方法是通过ASCII 码判断密码类型,完成用户注册时判断用户输入密码的强度,分强、弱、中三等级,它可以根据用户输入的密码显示对应的密码强弱等级,方便用户改进输入,第二种方法是通过JS正则来判断用户输入的密码强弱。下面分别对这两种方法进行展示。 方法一: html代码: <input name="password" type="PassWord" onKeyUp="CheckIntensity(this.value)"> <table border="0" cellpadding="0" cellspacing="0"> <tr align="center"> <td id="pwd_Weak" class="pwd pwd_c"> </td> <td id="pwd_Medium" class="pwd pwd_c pwd_f">无</td> <td id="pwd_Strong" class="pwd pwd_c pwd_c_r"> </td> </tr> </table> css代码: <style type="text/css"> .pwd{width:40px;height:20px;line-height:14px;padding-top:2px;} .pwd_f{color:#BBBBBB;} .pwd_c

分享一个js方法

牧云@^-^@ 提交于 2019-12-20 10:17:08
这是一个关于参数合并的方法,这个场景也经常遇到,比如我们现在要对微信小程序的wx.request进行再一次封装,会涉及到一些默认的参数和每次使用自己传递的参数合并问题,分享代码。 var extend = function(target) { var sources = Array.prototype.slice.call(arguments, 1); for (var i = 0; i < sources.length; i += 1) { var source = sources[i]; for (var key in source) { if (source.hasOwnProperty(key)) { target[key] = source[key]; } } } return target; }; 使用如下 options = utils.extend({}, defaultOptions, options); 来源: https://www.cnblogs.com/DoNetCShap/p/9941269.html

js基础

狂风中的少年 提交于 2019-12-20 06:25:16
js 12.15日笔记 js变量 变量类型 string number boolean null undefined object 使用变量之前需要对变量提前声明和赋值 // var a; var b,c; var k=10; console.log(a,b,c);----undefined 没有被定义 console.log(k);k=10 变量类型检测(typeof) var a=10; var b="a"; var c=null; var d=true; var e=undefined; var f={}; var g=function (){ var nn=1; console.log(typeof a) //number类型 全局变量与局部变量作用域 var a=10;//全局变量 f1(); f2(); function f1(){ var b=5; // 局部变量 console.log(a,b,); //输出结果10,5 } function f2(){ var c=6; console.log(a,b,c);//c不是全局变量,输出结果c 没有被定义 } js函数问题 常规定义方法function 函数名称(){} menthod(); //执行 function method(){ console.log(“输出”); } console.log(method1

详解js跨域问题

大憨熊 提交于 2019-12-20 01:08:22
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 什么是跨域? 概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。 URL 说明 是否允许通信 http://www.a.com/a.jshttp://www.a.com/b.js 同一域名下 允许http://www.a.com/lab/a.jshttp://www.a.com/script/b.js 同一域名下不同文件夹 允许http://www.a.com:8000/a.jshttp://www.a.com/b.js 同一域名,不同端口 不允许http://www.a.com/a.jshttps://www.a.com/b.js 同一域名,不同协议 不允许http://www.a.com/a.jshttp://70.32.92.74/b.js 域名和域名对应ip 不允许http://www.a.com/a.jshttp://script.a.com/b.js 主域相同,子域不同 不允许http://www.a.com/a.jshttp://a.com/b.js 同一域名,不同二级域名(同上) 不允许(cookie这种情况下也不允许访问)http://www.cnblogs.com/a.jshttp://www.a.com/b.js 不同域名 不允许 对于端口和协议的不同,只能通过后台来解决。

js与app交互

China☆狼群 提交于 2019-12-19 13:19:39
1. 判断当前页面的环境 var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端 var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端 if(isAndroid){ //android环境            JSAndroid.getToken() }else if(isiOS){ //ios环境       getToken()      } 2.由于ios内部问题 有时要做特殊处理 web端: /*这段代码是固定的,必须要放到js中*/ function setupWebViewJavascriptBridge(callback) { if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); } if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); } window.WVJBCallbacks = [callback]; var WVJBIframe =