+ -
当前位置:首页 → 问答吧 → 帮忙看一小段js代码,谢谢!

帮忙看一小段js代码,谢谢!

时间:2011-10-13

来源:互联网

JScript code

(function(d) { 
    var iframe = d.body.appendChild(d.createElement('iframe')), 
    doc = iframe.contentWindow.document; 

    // style the iframe with some CSS 
    iframe.style.cssText = "position:absolute;width:200px;height:100px;left:0px;"; 

    doc.open().write('<body onload="' + 'var d = document;d.getElementsByTagName(\'head\')[0].' + 'appendChild(d.createElement(\'script\')).src' + '=\'\/path\/to\/file\'">'); 

    doc.close(); //iframe onload event happens 
})(document); 




请问(function(d) {...})(document); 什么意思?该函数什么时候执行?

作者: persist_yu20082009   发布时间: 2011-10-13

这段话,是直接“调用这个函数” 类似于这种:

  (function(a){document.write(a);})(3)输出就是3,就是自动调用这个函数

作者: gggscfaii   发布时间: 2011-10-13

谢谢1楼,还有个问题,这段代码老是报 'body'为空或不是对象,这个问题该怎么解决?谢谢!

作者: persist_yu20082009   发布时间: 2011-10-13

引用 2 楼 persist_yu20082009 的回复:

谢谢1楼,还有个问题,这段代码老是报 'body'为空或不是对象,这个问题该怎么解决?谢谢!


因为document是全局变量。他这样做是将全局变量传进函数里面,就变成局部变量doc了,每次访问的时候都减少了访问作用域链,提高了性能
你说body为空是因为document没准备好的时候你就调用了,你将此代码用
window.onload = function(){
  //代码
}执行
或者放到body下面执行
<body>
</body>
<script>
//代码
</script>

作者: liangws   发布时间: 2011-10-13

学习了。。。

作者: A_Q111   发布时间: 2011-10-13


学习了

作者: wqs1010   发布时间: 2011-10-13

学习了 解说的很好

作者: xph0916   发布时间: 2011-10-13

3楼 解说的很好!

作者: wangyangtfr   发布时间: 2011-10-13

引用 3 楼 liangws 的回复:
引用 2 楼 persist_yu20082009 的回复:

谢谢1楼,还有个问题,这段代码老是报 'body'为空或不是对象,这个问题该怎么解决?谢谢!


因为document是全局变量。他这样做是将全局变量传进函数里面,就变成局部变量doc了,每次访问的时候都减少了访问作用域链,提高了性能
你说body为空是因为document没准备好的时候你就调用了,你将此代码用
wind……

理解的很好~~~

作者: fanchuanzhidu   发布时间: 2011-10-13