onerror 运行 无论如何即使没有错误

Onerror running anyway even when no error

好的,所以每当加载广告网络提供的图片时出现问题,我都会尝试 运行 一些 javascript。

广告显示正常,但我的脚本还是被调用了。我是不是用错了方法?

代码:

<script type="text/javascript">
    function catchAdLoadError(i) {
        console.log("error happened loading advert " + i);
        trackingInfo['adfailedtoload'] = 'testad' + i;

        document.getElementById("t-tracking-fragment").innerHTML = vsDoTracking();
    }
    $(function() {
        document.getElementById("advertBanner0").addEventListener("error", catchAdLoadError(0));
        document.getElementById("advertBanner1").addEventListener("error", catchAdLoadError(1));
    });

</script>

当您设置事件侦听器时,正在调用和解释您的错误函数。使用匿名函数定义事件监听器:

document.getElementById("advertBanner0").addEventListener("error", function(){ catchAdLoadError(0) } );

而不是:

document.getElementById("advertBanner0").addEventListener("error", catchAdLoadError(0));

第二个事件侦听器也是如此。

备注:

函数 addEventListener 需要以下格式的参数:

addEventListener( eventName, callbackFunction )

当您指定某个函数来侦听事件时,预期的第二个参数是函数对象,而不是函数调用,所以catchAdLoadError(0) 立即执行。您可以像 catchAdLoadError 这样直接输入一个函数名称,但是由于您在函数调用中需要一个 exta 参数(0 或 1),因此您必须将每个特定的调用放在一个将由事件调用的匿名函数中。