在我们的页面中,如果不是显示指出来的话,javascript是同步加载的,也就是javascript的加载是阻塞的,后面的元素需要等待javascript加载完毕后才能进行再加载。呵呵,对于一些意义不是很大的javascript,如果放在页面的头部,如果加载很慢的话,会严重影响用户的体验的。
有人会问这时为什么呢?因为有可能你的javascript代码会动态的植入一些元素到页面的dom中。
因此对于那些会有修改dom的javascript(最简单如里面会有document.writlen这样的语句),我们只能阻塞的加载,而且最好也是放在页面的最底部。但是对于那些不会导致dom修改的javascript,如一些统计的javascript,如google的统计等,我们完全可以异步的来加载,不必同步阻塞的来等待。如何异步加载一个javascript文件呢?
一 defer方式
在w3c的html中定义的script标签有一个defer的属性,这个属性开启的话表示这段javascript代码可以延迟加载。
<!ELEMENT SCRIPT - - %Script; -- script statements -->
<!ATTLIST SCRIPT
charset %Charset; #IMPLIED -- char encoding of linked resource --
type ...
QQ云输入法目前每次都需要从收藏夹来启动后使用,如果收藏项很多的话,找起来都很麻烦。
而且现在每次启动一个页面都需要启动一下QQ云输入法,有点小小的麻烦。
今天学习了一下chrome的插件开发,用了3个小时搞了一个简单的chrome的QQ云输入法插件。
原理也是很简单的:
1 基于"background_page": "background.html",提供这么一个页面,里面执行一段监听tab更新事件的js代码,每当有新的tab时,在当前tab调用一下收藏夹哪里的js代码,就把QQ云输入法给启动起来了。
2 再通过"browser_action"是的能够在chrome上有一个按钮。
附源码:
manifest.json
{
"name": "QQ云输入法",
"version": "1.0",
"description": "QQ云输入法的chrome扩展",
"background_page": "background.html",
"permissions": [
"tabs", "http://*/*"
],
"browser_action": {
"name": "QQ云输入法",
"default_icon" : "icon.ico"
}
}
background.html
<html>
<head>
<script>
// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, {code: "(function(q){!!q?q.toggle():(function(d,j){j=d.createElement('script');j.src='http://ime.qq.com/fcgi-bin/getjs';j.setAttribute('ime-cfg','lt=2');d.getElementsByTagName('head')[0].appendChild(j)})(document)})(window.QQWebIME);"});
});
chrome.tabs.onUpdated.addListener(function(tabid, changeinfo, tab){
if(changeinfo.status == 'loading' && !tab.incognito)
{
chrome.tabs.executeScript(null, {code: "(function(q){!!q?q.toggle():(function(d,j){j=d.createElement('script');j.src='http://ime.qq.com/fcgi-bin/getjs';j.setAttribute('ime-cfg','lt=2');d.getElementsByTagName('head')[0].appendChild(j)})(document)})(window.QQWebIME);"});
}
});
</script>
</head>
</html>
chrome就是这么的强大啊!插件写起来也比较方便。第一次写插件,还有很多没有考虑的地方,慢慢的来添加吧!
这篇文章是用QQ云输入法敲出来的。杠杠的。
QQ云输入法chrome插件下载
QQ云输入法可以在你的网站很简单就能够被引入来使用。
在页面中增加如下这段html代码,引入你QQ云输入法的js代码即可,实在是方便得很啊!
利用QQ云输入法提供的这个获取最新js的CGI脚本,还能保证你的网站使用的是最新版本的QQ云输入法。
呵呵,真是不错!
快来试试吧!
<script type="text/javascript" language="JavaScript" src="http://ime.qq.com/fcgi-bin/getjs"></script>
依据优化原则,这个最好是放到html的底部,body的结束的上面,类似我的博客。查看页面源码看看吧o(∩_∩)o 哈哈
之前的QQWeb输入法正式更名为QQ云输入法了。很多用户更喜欢云输入法这样的叫法,这样叫起来更亲切一些!
呵呵,不管什么叫法,使用起来方便就好:
体验之后,和搜狗云输入法比较起来,QQ云输入法总结优点如下:
浏览器兼容性更好,如chrome
web站点兼容更好,webqq,百度搜索结果页,支持iframe页面
支持光标跟随
支持常用输入选项设置,支持候选词横排竖排、支持模糊音。 不过目前不支持配置保存
更快的取词速度,同时打开QQ云输入法和搜狗云输入法进行输入可比较
支持简繁转换
清爽的输入交互
缺点:
在词库方面和搜狗相比还是有一点点的差距,感觉不是很全。
不过速度和体验是第一位的!
QQ云输入法官网:http://py.qq.com/web/
QQ云输入法QQ微博:http://t.qq.com/webime/
QQ云输入法Qzone博客:http://qqwebpy.qzone.qq.com/
QQ云输入法FAQ:http://service.qq.com/category/qqwebsrf.html
QQWeb输入法beta版发布了。
1 兼容性更强(目前应该是业界第一)
2 速度更快(目前应该是业界第一)
3 支持类似客户端的光标跟随功能,这个功能超赞(目前应该是业界第一)
4 支持简繁体、支持模糊音
5 支持横排、竖排
呵呵,一次收藏,无限可用!快来体验吧!
体验地址:http://py.qq.com/web/
微博地址:http://t.qq.com/webime
后续会整理一个方便的嵌入到网页的调用方法,类似QQ在线一个方便的脚本,便于广大站长来使用!