webview中的load事件与location.href关系

最近开发遇到一个奇怪的问题,在安卓上的webview中js与原生系统的交互一般通过某些伪协议URL Schema,诸如location.href="http://api.xxx", 但如果此时你有一个正在类似异步处理的任务,如ajax请求,拉取图片,加载js,css等,这些资源的load事件可能不会被触发. var script=document.createElement("script"); script.src="a.js"; script.onload=function( ...

深入实现Promise A+规范

Promise对目前的前端开发者来说已经是必须去了解甚至掌握的一个东西了,ES6规范中甚至定义了原生的Promise对象,对于它到底是什么的问题请参考这篇文章Promise基础 因为最初Promise的概念提出的时候,一群人为了规范它,产生了一个叫Promise A的规范,而本文要说的是Promise A+,没错多了一个加号,说明是有不一样的,详细的规范细节请点击Promise/A+,该规范是对 Promise/A 规范的补充和修改,它出现的目的是为了统一异步编程中的接口,本文会就结合规范来一步步实现Promise A+代码 Promise实现的几个重点 要保证then方法回调的时序,即第一个promise兑现的时候,后面链式调用的then方法参数回调依次调用,但同时这些方法又不能在执行then方法的时候立即执行, ...

为seajs模块进行transport化的gulp插件

阿里的gulp-transport由于需要模块定义package.json,因此不是很适合由grunt转到使用gulp的用户,因此开发了一个gulp-seajs-transport来解决这个限制,并且定义了travis CI来做持续集成,配置如下 language: node_js node_js: - "0.10" after_script: NODE_ENV=test istanbul cover ./node_modules/mocha/bin/ ...

利用Karma来为seajs模块进行单元测试

安装Karma及相关插件 npm install karma --save-dev //测试程序会自动载入node_modules下以karma为前缀的插件 npm install karma-mocha --save-dev //单元测试框架mocha的插件 npm install karma-chrome-launcher --save-dev //运行测试时自动启动chrome浏览器的插件 npm install chai-sinon --save-dev //chajs一套bdd风格断言框架和一套mock框架sinon npm install -g karma-cli ...

如何编写高效的js代码(6)

hasOwnProperty和for...in hasOwnProperty 是 JavaScript 中唯一一个处理属性但是不查找原型链的函数 而for..in语句是用来查找对象属性时遍历原型链上的所有属性(for in 循环不会遍历那些 enumerable 设置为 false 的属性;比如数组的 length 属性) 一般我们会用for...in循环来遍历某个对象中的所有自定义属性,就像操作字典一样,而for...in又会去查找原型链,如果你在原型链上加入了一个可以被枚举的(enumerable 设置为 ...