2017-05-02 2 views
0

좋아요. 광고 네트워크에서 제공하는 이미지를로드 할 때마다 자바 스크립트를 실행하려고합니다.오류가 발생하지 않아도 오류가 발생하더라도 오류가 발생합니다.

광고는 잘 보이지만 스크립트는 계속 호출됩니다. 내가 잘못된 방향으로가는거야?

코드 :

<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> 

답변

2

귀하의 오차 함수를 호출하고 이벤트 리스너를 설정할 때 해석되고있다. 이벤트 리스너를 정의하는 익명 함수를 사용하여

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

대신 :

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

두 번째 이벤트 리스너에 대해 동일합니다.

주 :

addEventListener(eventName, callbackFunction) 

당신이 이벤트를 듣고 몇 가지 함수를 지정

이 예상되는 2 차 매개 변수가 함수 객체,되지 않습니다 :

함수 또는 addEventListener이 형식의 매개 변수를 기대 함수 호출이므로 catchAdLoadError(0)이 즉시 실행됩니다. 함수 이름을 catchAdLoadError과 같이 직접 지정할 수는 있지만 함수 호출 (0 또는 1)에 exta 매개 변수가 필요하므로 각 특정 호출을 이벤트에서 호출 할 익명 함수에 넣어야합니다.

+0

완벽하게 작동합니다 (왜 이것이 필요한 이유인지는 모르겠지만,이 유형의 것이 필요한지에 관해 읽을 수있는 링크 나 무언가가 있다면 읽으면서 듣고 기꺼이 더 많이 배울 수 있습니다). !) – Box

+0

멋지다! 나는 그것에 대한 몇 가지 추가 노트를 넣어 답을 편집했습니다. –

관련 문제