js defer使用 defer 是什么意思


程序下载完后再进行解析和执行。
文档上说defer中的代码不立即执行,页面会继续载入,那defer中的代码具体在什么时候执行呢?在全部javascript代码载入之后?页面载入之后?onload之前还是之后?

答案是:

并不是说在网页载入时不执行,可以在网页写一个SCRIPT.然后定义它,但是在载入时它还是执行了,
后来在找其它的东东时发现,因为它不有个子, 不知它是如何用,
原来它是在你的网页已截入完成后,你想动态添加一个新的<script>时用的,如果你只是object.innerHTML = "<script" + ">"..."</script" + ">";
那么当你调用你这个新定义的东东就会出错,说还未定义,当你在上面的代码加入defer时那么你就能成功调用它,
在下面的代码中你可以试下把它去掉, defer>";,那么你就会发现问题!
<HTML>
<SCRIPT>
function insertScript(){
var sHTML="<input type=button onclick=" + "go2()" + " value='Click Me'><BR>";
var sScript="<SCRIPT defer>";
sScript = sScript + "function go2(){ alert('Hello from inserted script.') }";
sScript = sScript + "</SCRIPT" + ">";
ScriptDiv.innerHTML = sHTML + sScript;
}
</SCRIPT>
<BODY onload="insertScript();">
<DIV ID="ScriptDiv"></DIV>
</BODY>
</HTML>

//defer属性指示该段脚本不会改变文档的内容。在文档完全显示之前,js解释器不执行这段代码。
具体到这个例子,因为js不允许动态生成js代码,所以去掉defer后产生的代码会被认为是非法的。加上defer后的代码,会被解释器认为是载入页面的时候跳过去的,可以执行。

<script src="../js/script.js" defer></script>
中的defer作用是文档加载完毕了再执行脚本,这样回避免找不到对象的问题

<button id="myButton" onclick="alert('ok')">test</button>
<script>
myButton.click();
</script>

<script>
myButton.click();
</script>
<button id="myButton" onclick="alert('ok')">test</button>

<script defer>
function document.body.onload() {
alert(document.body.offsetHeight);
}
</script>

加上 defer 等于在页面完全在入后再执行,相当于 window.onload ,但应用上比 window.onload 更灵活!

defer是脚本程序强大功能中的一个“无名英雄”。它告诉浏览器Script段包含了无需立即执行的代码,并且,与SRC属性联合使用,它还可以使这些脚本在后台被下载,前台的内容则正常显示给用户。
--但是 文档加载完毕了再执行脚本

最后请注意两点:
1、不要在defer型的脚本程序段中调用document.write命令,因为document.write将产生直接输出效果。
2、而且,不要在defer型脚本程序段中包括任何立即执行脚本要使用的全局变量或者函数。

一个常用的优化性能的方法是:当脚本不需要立即运行时,在<SCRIPT>标签中设置“defer”属性。 (立即脚本没有被包含在一个function块中,因此会在加载过程中执行。) 设置“defer”属性后,IE就不必等待该脚本装载和执行完毕。这样页面加载会更快。一般来说,这也表明立即脚本最好放在function块中,并在document或者body对象的onload 句柄中处理该函数。在有一些脚本需要依赖用户操作而执行时----例如点击按钮,或者移动鼠标到某个区域----使用该属性非常有用。但当有一些脚本需要在页面加载过程中或加载完成后执行,使用defer属性得到的好处就不太大。



相关阅读:
jquery 的 $("#id").html() 无内容的解决方法
MSSQL2005还原数据库.dat或bak时的结构错误的解决方法
CSS网页设计无效的10个原因
Jquery遍历Json数据结构的代码
Windows xp系统登录界面的删除方法
MSSQL Server 2008图文安装教程
网页外部引用CSS之link和@import两种方式
Javascript 中截取小数位并实现四舍五入的方法
VBScript类组织开发
Linux setuid命令和setgid命令讲解
js之颜色梯度和渐变效果
CSS缩写常用语法总结
linux之wget命令下载ftp文件
PHP之ob_start()控制缓冲生成html
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 木兰花(饯别王元渤赴吉州) 忆妻[看花回] 小学生四年级开学作文:向梦想奔跑 我在生活中懂得艺术作文450字 死亡如此多情 每天讲故事之三家分晋 宝贝,答应我永远love我1 初三英语作文:Welcome to Dongguan_500字 难忘的教师节作文550字 困难作文600字 折百合花250字 教室里面的老鼠200字 一个叫泪的女孩(11)作文800字 母爱的延伸 初中初一作文650字:我班的风波 解读十七届四中全会精神_ 纸灯笼 爱情语句 来世记得早点来娶我 温暖的水 雨天的魅力作文900字 公司党代会工作报告 我,是我 实验中学十八岁成人宣誓仪式活动方案 热爱祖国,珍惜和平 那,回忆...好美 时代哀歌 儿童励志故事 五篇 职务分析—过程与方法初探 2009高三摸底--黑龙江哈师大附中2009届高三第一次考试试题(会员上传) 我家的懒猫100字 党的廉政准则学习心得体会 小学四年级作文2500字:中西快餐社会调查 80后,90后,为爱而生 小学重点不在成绩,在于阅读 春节祝福语 春节短信祝福 我们的节日儿童节作文:六月的花朵在绽放 丑到极致的美 快乐来自于朋友作文1200字 此时,天正微茫。那心里的豪情与奔烈之心早就收敛得一干二净了 鸽子是怎么认路回家的?800字 伤感短语说说:你是我难愈合的伤口,我是你不想要的以后 作文 我与李清照的对话 领巾伴我成长 一份沉重的爱,真的要不起吗? 教师给毕业生赠言 我和外星人 墨舞蝴蝶,一曲高山君会懂 我遇到了难题作文800字 看清人性再出手 友情让我感动作文600字

Copyright © 2016 phpStudy |