Javascript 取消绑定使用jQuery';加载的外部脚本添加的事件;s getScript函数

Javascript 取消绑定使用jQuery';加载的外部脚本添加的事件;s getScript函数,javascript,jquery,Javascript,Jquery,我正在使用jQuery的$.getScript函数加载一个外部脚本,其中有一些我无法理解的内容: if (!!window.addEventListener){ // FF window.addEventListener('load', init, false); } else if (!!window.attachEvent){ // IE window.attachEvent('onload', init); } else { window.onclick = ini

我正在使用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函数的回调中解除它们的绑定?

addEventListener
添加事件处理程序,
attachEvent
对不支持
addEventListener
的浏览器执行相同的操作,后者只是较旧的IE

您拥有的条件检查哪一个可用,并将事件处理程序附加到调用函数
init()

如果没有常规的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() {};
    }
});
当然,如果您不再需要原始事件处理程序,那么只需删除正在加载的脚本中的原始事件处理程序就更容易、更好了