我正在使用jQuery的$ .getScript函数加载一个外部脚本,它有一些我无法理解的内容:
if (!!window.addEventListener){ // FF
window.addEventListener('load', init, false);
} else if (!!window.attachEvent){ // IE
window.attachEvent('onload', init);
} else {
window.onclick = init;
}
有人可以解释一下这个吗?
我不确定但是它添加了一些事件监听器来检查页面是否已加载。
但是由于我使用$ .getScript函数加载脚本,我不再需要那些监听器了。
有没有办法在$ .getScript函数的回调中取消绑定它们?
答案 0 :(得分:0)
addEventListener
添加了事件处理程序,而attachEvent
对不支持addEventListener
的浏览器也是如此,这只是旧IE。
您检查哪一个可用的条件,并将事件处理程序附加到调用函数init()
的window.onload事件。
如果没有常规的onload处理程序可用,则一旦首次单击该窗口,它将回退到调用init()
函数。
要删除该功能,一旦脚本加载,您将不得不尝试相反的操作。
你说你正在使用$.getScript
,并且有一个回调,所以类似于:
$.getScript('myscript.js', function() {
if (window.removeEventListener) {
window.removeEventListener( 'load', init, false );
}else if ( window.detachEvent ) {
window.detachEvent( 'onload', init );
}else{
window.onclick = function() {};
}
});
当然,如果您不再需要该事件处理程序,只需删除正在加载的脚本中的原始事件处理程序就会更容易也更好。