一、js的延迟加载有助与提高页面的加载速度
-
1.使用setTimeout延迟方法的加载时间
延迟加载js代码,给网页加载留出更多时间
<script type="text/javascript" >
function A(){
$.post("/lord/login",{name:username,pwd:password},function(){
alert("Hello");
});
}
$(function (){
setTimeout('A()', 1000);
})
</script>
或者如下:
<script type=”text/javascript” src=”" id=”my”></script>
<script type=”text/javascript”>
setTimeout(“document.getElementById(‘my').src='include/php100.php'; “,3000);//延时3秒
</script>
在或者:动态常见DOM方式
- window.onload = function () {
- setTimeout(function () {
-
-
- var head = document.getElementsByTagName('head')[0];
-
-
- var css = document.createElement('link');
- css.type = "text/css";
- css.rel = "stylesheet";
- css.href = "new.css";
-
-
- var js = document.createElement("script");
- js.type = "text/javascript";
- js.src = "new.js";
-
-
- head.appendChild(css);
- head.appendChild(js);
-
-
- new Image().src = "new.png";
-
- }, 1000);
- };
再或者:
使用 document.write
iframe:
- window.onload = function () {
- setTimeout(function () {
-
-
- var iframe = document.createElement('iframe');
- iframe.setAttribute("width", "0");
- iframe.setAttribute("height", "0");
- iframe.setAttribute("frameborder", "0");
- iframe.setAttribute("name", "preload");
- iframe.id = "preload";
- iframe.src = "about:blank";
- document.body.appendChild(iframe);
-
-
- iframe = document.all ? document.all.preload.contentWindow : window.frames.preload;
- var doc = iframe.document;
- doc.open(); doc.writeln("<html><body></body></html>"); doc.close();
-
-
- var css = doc.createElement('link');
- css.type = "text/css";
- css.rel = "stylesheet";
- css.href = "new.css";
-
-
- var js = doc.createElement("script");
- js.type = "text/javascript";
- js.src = "new.js";
-
-
- doc.body.appendChild(css);
- doc.body.appendChild(js);
-
-
- new Image().src = "new.png";
-
- }, 1000);
- };
直接把需要加载东西放到另一个页面中
- window.onload = function () {
- setTimeout(function () {
-
-
-
- var iframe = document.createElement('iframe');
- iframe.setAttribute("width", "0");
- iframe.setAttribute("height", "0");
- iframe.setAttribute("frameborder", "0");
- iframe.src = "preloader.html";
- document.body.appendChild(iframe);
-
- }, 1000);
- };
二、在需要插入JS的地方插入以下代码:
程序代码
<span id=”L4EVER”>LOADING…</span>
当然,那个LOADING…你可以换成自己喜欢的小图片.看起来很有AJAX效果呢.
然后在页面最底端插入:
程序代码
<span id=”AD_L4EVER”>你的JS代码在这里!</span >
<script>L4EVER.innerHTML=AD_L4EVER.innerHTML;AD_L4EVER.innerHTML=”";</script>
例如引入外部js脚本文件时,如果放入html的head中,则页面加载前该js脚本就会被加载入页面,而放入body中,则会按照页面从上倒下的加载顺序来运行javascript的代码~~~ 所以我们可以把js外部引入的文件放到页面底部,来让js最后引入,从而加快页面加载速度
- 3.上述方法2也会偶尔让你收到Google页面速度测试工具的“延迟加载javascript”警告。所以这里的解决方案将是来自Google帮助页面的推荐方案。
//这些代码应被放置在</body>标签前(接近HTML文件底部)
<script type="text/javascript">
function downloadJSAtOnload() {
var element = document.createElement("script");
element.src = "defer.js";
document.body.appendChild(element);
}
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
else if (window.attachEvent)
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
这段代码意思是等到整个文档加载完后,再加载外部文件“defer.js”。
使用此段代码的步骤:
1).复制上面代码
2).粘贴代码到HTML的标签前 (靠近HTML文件底部)
3).修改“defer.js”为你的外部JS文件名
4).确保你文件路径是正确的。例如:如果你仅输入“defer.js”,那么“defer.js”文件一定与HTML文件在同一文件夹下。
四、async 属性(缺点是不能控制加载的顺序)
<script src="" async="true"/>
1.defer 属性,该属性用来通知浏览器,这段脚本代码将不会产生任何文档内容。例如 JavaScript代码中的document.write()方法将不会骑作用,浏览器遇到这样的代码将会忽略,并继续执行后面的代码。属性只能是 defer,与属性名相同。在HTML语法格式下,也允许不定义属性值,仅仅使用属性名。加上 defer 等于在页面完全在入后再执行.
<scriptsrc="file.js" defer></script>
2.async 属性,不能保证脚本会按顺序执行。它们将在onload 事件之前完成。async和defer一样,都不会阻塞其他资源下载,所以不会影响页面的加载,但在async的情况下,js文档一旦下载完毕就会立刻执行,所以很有可能不是按照原本的顺序来执行
<scriptsrc="file.js" async></script>
五、
使用jQuery的getScript()方法
$.getScript("outer.js",function(){
console.log("脚本加载完成")
});
六、 Ajax eval
用ajax下载代码,然后用eval执行
七. Ajax Injection
用ajax下载代码,建立一个空的script tag,设置text属性为下载的代码
七、