同期ブロックなしロードjs
3049 ワード
同僚の分析ページはブロックロードjsに遭遇し、ページのレンダリング速度に影響を及ぼした.
以前、WYSIWYGプラグインメカニズムを実現する際にlazy loadを実現するために、同期無ブロックロードjsの方法を書いたが、解決方法は暴力的で、参考に供して、注意して、ただのdemoだった.
importJSを使用するjsコードは(function(){try{/*コード*/}catch(ex){}}})()に書かなければなりません.間、importJSは頭に...さもなくば繰り返し実行して、、、このdemoを書く時、ff 3の下でネストしたロードがalertがブロックできないbugが現れることを発見します
これは間違いなく良い解決方法ではなく、制限が比較的大きく、ただ無理に同期無ブロックロードを解決するだけです^^、そしてbingoの方法を参考にしました
はい、同期ブロックなしロードjsに興味のある方は、次のように拡張できます.
http://bbs.51js.com/viewthread.php?tid=72939&extra=page%3D1%26amp;filter%3Ddigest
http://www.iteye.com/topic/134964
http://jindw.iteye.com/blog/66702
http://jsvm.org/forums/2424/ShowPost.aspx#2424
友達が良い解決方法を提供することを望んでいます.
以前、WYSIWYGプラグインメカニズムを実現する際にlazy loadを実現するために、同期無ブロックロードjsの方法を書いたが、解決方法は暴力的で、参考に供して、注意して、ただのdemoだった.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>test</title>
<script type="text/javascript">
var require = {};
function importJS(file) {
if (typeof require[file] != "undefined") {
return;
}
require[file] = true;
var script = document.createElement("script");
script.type = "text/javascript";
script.src = file;
var callback = arguments.callee.caller;
script.onload = function() {
callback();
callback = function(){};
};
script.onreadystatechange = function() {
if(/loaded|complete/.test(this.readyState)) {
callback();
callback = function(){};
}
};
document.getElementsByTagName("head")[0].appendChild(script);
throw "";
}
</script>
<script type="text/javascript">
(function(){try {
importJS('a.js'); // a.js
importJS('b.js'); // b.js
alert('c'); // c
}catch (ex) {}})();
</script>
</head>
<body>
</body>
</html>
importJSを使用するjsコードは(function(){try{/*コード*/}catch(ex){}}})()に書かなければなりません.間、importJSは頭に...さもなくば繰り返し実行して、、、このdemoを書く時、ff 3の下でネストしたロードがalertがブロックできないbugが現れることを発見します
これは間違いなく良い解決方法ではなく、制限が比較的大きく、ただ無理に同期無ブロックロードを解決するだけです^^、そしてbingoの方法を参考にしました
はい、同期ブロックなしロードjsに興味のある方は、次のように拡張できます.
http://bbs.51js.com/viewthread.php?tid=72939&extra=page%3D1%26amp;filter%3Ddigest
http://www.iteye.com/topic/134964
http://jindw.iteye.com/blog/66702
http://jsvm.org/forums/2424/ShowPost.aspx#2424
友達が良い解決方法を提供することを望んでいます.