2012-01-05 7 views
1

이상한 문제가 있습니다. Google 광고 (DFP)가 IE8 (8 미만의 IE는 테스트하지 않음)에 표시되지 않습니다.Google 광고가 IE8에 표시되지 않습니다.

다음 코드 (사용중인 jQuery)를 사용하고 있습니다.

/*-- Advertizing --*/ 
var googletag = googletag || {}; 
googletag.cmd = googletag.cmd || []; 
(function(){ 
    var script = $('<{0}></{0}>'.format('script')); 
    script.attr('type','text/javascript'); 
    script.attr('async','async'); 
    script.attr('src',document.location.protocol + '//www.googletagservices.com/tag/js/gpt.js'); 
    $('head').eq(0).prepend(script); 

    googletag.cmd.push(function() { 
     googletag.defineSlot('/1016203/PG_194x662_Async', [194, 662], 'div-gpt-ad-1320434986666-0').addService(googletag.pubads()); 
     googletag.defineSlot('/1016203/PG_530x99_Async', [530, 99], 'div-gpt-ad-1320435053303-0').addService(googletag.pubads()); 
     googletag.defineSlot('/1016203/PG_530x50_Async', [530, 50], 'div-gpt-ad-1320435026691-0').addService(googletag.pubads()); 
     googletag.pubads().enableSingleRequest(); 
     googletag.enableServices(); 
    }); 
    googletag.cmd.push(function() { googletag.display('div-gpt-ad-1320434986666-0'); }); 
    googletag.cmd.push(function() { googletag.display('div-gpt-ad-1320435053303-0'); }); 
    googletag.cmd.push(function() { googletag.display('div-gpt-ad-1320435026691-0'); });  
}());

이것은 테스트되었으며 IE9, Chrome, Firefox에서 올바르게 작동합니다 ...하지만 IE8은 이상한 것입니다. 이 사이트는 photogallery.classiccars.com에 있습니다. 하나의 IFrame이 부분적으로 IE8에로드되지만 (DOM 트리에서) 거의 보입니다.

답변

2

Google의 코드는 for (var x in array)이며, 일부 브라우저에서는 Array.prototype을 확장 할 때 문제가 있습니다.

왜 반복을 위해 .length 속성을 사용하지 않거나 hasOwnProperty를 검사하는 것이 나를 벗어났습니다.하지만 그 문제는 당면한 것으로 보입니다.

Underscore.js을 필요로하는 프로젝트에 Backbone.js이 포함되어 있기 때문에 프로젝트의 유틸리티 메소드를 사용하기 위해 코드베이스를 조정합니다. Underscore.js 자바 스크립트를 작성하는 사람에게

//instead of an ES5-Shim extension to Array.prototype.filter (for example) 
var ary = [...]; 

//instead of this... 
var results = ary.filter(function(item){...}); //es5 

//use this 
var results = _.filter(ary, function(item){...}); //underscore.js

메모 , 당신은 명시 적으로 hasOwnProperty를 확인하지 않는 for..in을 사용하지 마십시오. 이것은 배열과 객체 모두에 적용됩니다.

var ary = [...]; 
for (var x in ary) { 
    if (!ary.hasOwnProperty(x)) continue; //skip inherited properties. 

    //your handling here 
    ... 
}
+0

좀 더 자세히 설명해 주시겠습니까? 나는 많은 JS와 함께 대규모 프로젝트를 진행하고 있으며, 구글의 광고는 IE8에서도 보이지 않는다. 내가 바꿀 필요가있는 것은 무엇입니까? –

+0

Array.prototype 또는 Object.prototype을 확장하는 무언가를 사용하는 경우 문제가 발생할 것입니다 ... EcmaScript5 shimming (프로토 타입 라이브러리는 비슷합니다)을 사용하고있었습니다. 이러한 심을 제거하고 lodash 또는 밑줄과 같은 것을 사용하십시오. – Tracker1

관련 문제