JS脚本defer的作用示例介绍

 defer作用是文档加载完毕了再执行脚本,这样回避免找不到对象的问题,下面有个不错的示例,感兴趣的朋友可以参考下

代码如下:
<script src="../cgi-bin/delscript.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属性得到的好处就不太大。 
 
都是defer惹的祸,这两天网站查看全文出错的原因 
 
<p style='line-height: 150%;text-indent: 15pt;'>上周末,本站投放了Google广告,当时为了防止广告的投入延长页面导入的时间,修改了下Google Ad代码,<script>使用了defer延迟导入广告,我一直使用的是FireFox浏览器,一直没发现有问题,今天,有朋友上本站查资料,她用的是Maxthon,告诉我一查看文章,页面就一闪就过去了,这才知道有问题,我说这两天这么网站的访问一直在掉呢,一查原因,才发现是defer的原因,因为在Firfox中defer好象是失效的,页面实际还是原始内容一起载入了,而在IE中,由于延后载入脚本,对于Google Ad脚本来说,其使用的是Document.write的写入方法,并且因为defer的原因,Google AD的脚本检测为iframe了,所以当获取到Google 广告的实际内容的时候就把整个页面给覆盖了,也就造成了查看全文一闪而过的现象。</p> 
 
<p style='line-height: 150%;text-indent: 15pt;'>这都怪我修改了代码没这么测试,以后不管改什么都需要在IE和FireFox中都测试通过才可以,对于这两天造成大家的访问困难致以最最真挚的道歉!</p> 
<p style='line-height: 150%;text-indent: 15pt;'>另:推荐大家使用FireFox访问本站,访问和解析速度以及页面布局的一致性都更好!</p> 
 

时间: 2024-09-19 09:36:18

JS脚本defer的作用示例介绍的相关文章

JS脚本defer的作用

js|脚本 <script src="../cgi-bin/delscript.js" defer></script>中的defer作用是文档加载完毕了再执行脚本,这样回避免找不到对象的问题---有点问题   <button id="myButton" >test</button><script>myButton.click();</script>  <script>myButton

JQuery与JS里submit()的区别示例介绍

 这篇文章主要介绍了JQuery与JS里submit()的区别,需要的朋友可以参考下 ASP.NET 的服务器控件回发是使用这一段JS代码:   代码如下: var theForm = document.forms['form1'];  if (!theForm) {  theForm = document.form1;  }  function __doPostBack(eventTarget, eventArgument) {  if (!theForm.onsubmit || (theFo

JS动态调用方法名示例介绍

 在JS中如何动态调用方法名,想必很多的朋友们都不会吧,下面为大家举例介绍下具体的调用方法 先看看JS的一个函数    JavaScript eval() 函数  定义和用法    eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码.  语法    eval(string)    参数 描述    string 必需.要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句.    返回值    通过计算 string 得到的值(如果有的话). 

JQuery与JS里submit()的区别示例介绍_jquery

ASP.NET 的服务器控件回发是使用这一段JS代码: 复制代码 代码如下: var theForm = document.forms['form1']; if (!theForm) { theForm = document.form1; } function __doPostBack(eventTarget, eventArgument) { if (!theForm.onsubmit || (theForm.onsubmit() != false)) { theForm.__EVENTTAR

JavaScript中双叹号!!作用示例介绍

  !!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false; 经常看到这样的例子: 代码如下: var a; var b=!!a; a默认是undefined.!a是true,!!a则是false,所以b的值是false,而不再是undefined,也非其它值,主要是为后续判断提供便利. !!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false; 因为javascript是弱类型的语言(变量没有固定

JavaScript中双叹号(!!)作用示例介绍_javascript技巧

经常看到这样的例子: 复制代码 代码如下: var a: var b=!!a; a默认是undefined.!a是true,!!a则是false,所以b的值是false,而不再是undefined,也非其它值,主要是为后续判断提供便利. !!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false; 因为javascript是弱类型的语言(变量没有固定的数据类型)所以有时需要强制转换为相应的类型,类似的如: 复制代码 代码如下: a=parseIn

JS动态调用方法名示例介绍_javascript技巧

先看看JS的一个函数 JavaScript eval() 函数 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数 描述 string 必需.要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句. 返回值 通过计算 string 得到的值(如果有的话). 说明 该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回.因此请不要为 eval() 函

Flex中Array的IndexOf 的作用示例介绍_Flex

Flex中 Array 的IndexOf 的作用 1.说明 indexOf用于在索引中从小到大查找,如果查得到就返回索引值,查不到就返回-1: 2.实例 (1)设计源码 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://n

PHP @ at 记号的作用示例介绍_php技巧

看PHP的代码,总有些行前边有@符号,一直不知道是什么意思. 例如dede5.7 @ni=imagecreatetruecolor(ftoW,$ftoH); 今天用到了,就记一下吧.其实它是错误控制符,即即使出现错误,也无视出现的错误信息,继续执行下边的代码. @$page=$_GET['page']?intval($_GET['page']):1; 这句是从URL中获取page关键字的值,比如"index.php?page=5",则$page就会取到5. 但是如果有error,比如&