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),因此您必须将每个特定的调用放在一个将由事件调用的匿名函数中。
好的,所以每当加载广告网络提供的图片时出现问题,我都会尝试 运行 一些 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),因此您必须将每个特定的调用放在一个将由事件调用的匿名函数中。