javascript

JavaScript 异步编程一二三

1. JavaScript 天生异步 你说我一个浏览器写写表单验证的,怎么就突然成为如今最流行的编程语言了呢? JavaScript 设计之初是用于浏览器端 GUI 编程,这就决定了这门语言是单线程、非阻塞的。而 JavaScript 正是通过异步执行任务来实现非阻塞。 关于 JavaScript 异步机制和 Event loop 详细可见:Help, I'm stuck in an event-loop 2. 异步函数的类型 JavaScript 环境本身提供的异步函数通常可以分为两大类: I/O 函数

javascript

Ajax 跨域问题

我的理解 为什么会存在跨域问题? 浏览器的安全机制限制 -- js 代码不能从不同的服务器读取载入文档内容,这便是浏览器的同源策略。 做到同源便是要求 域名 协议 端口 三者均相同,缺一不可。 如何解决? 基于 Ajax 立场寻求方案: HTTP 访问控制即 CORS (IE 10 +,无需改动 js 代码) 服务器端代理 (兼容性好且无需改动 js 代码,但成本会有些) 跳过 Ajax 范畴:

javascript

Chrome扩展开发实践——外部数据的获取和存储

前言 最近尝试着写一个Chrome的天气扩展。几番折腾下来,遇到了不少问题。 正文 关于Chrome扩展的开发,当然是要看Google的Chrome开发者文档了:Chrome文档; 这个是全英文的,然而360很良心地把开发者文档翻译了一遍(⊙o⊙):360文档; 关于API和JSON处理 我的想法是这样的,这个浏览器扩展能够得到设备的地理位置并返回当前位置的天气状况,而JavaScript没有API来得到地理位置信息,必须得先获取ip并通过第三方ip地址查询接口来得到所在城市的信息。(我用的是新浪的接口) http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json 其内容如下: {"ret"

javascript

浅析 JavaScript 的函数节流和去抖

现代网页的实现上,会有很多交互上的优化,比如常见的 滚动加载 ,输入联想 等等。他们的实现思路很简单,以滚动加载而言,无非就是去是增加一个滚动的事件监听,每次滚动判断当前的元素是否已经滚动到了用户的可视区,然后根据判断结果来决定是否来加载相关数据。 输入联想也类似,无非就是修改一下监听的事件类型,和判断的相关逻辑。 前端交互的优化上,我们总是需要需要事件监听来知道用户进行了什么操作,从而设定页面给出怎样的反应。但本文主要的内容不是讲如何具体的实现某个交互,而是对交互实现的依赖的事件监听那部分的优化。 滚动加载图片的例子 var onScroll = function() { // 这里判断当前的 img 元素是否已经滚动到了用户的可视区 // 根据判断结果来决定是否来加载相关数据 // 注:img 元素当设置 src 属性值后会产生一个 http