Google广告未在IE8中显示

时间:2012-01-05 23:48:40

标签: javascript internet-explorer-8 ads

我遇到了一个奇怪的问题,Google广告(DFP)没有出现在IE8上(不测试8以下的IE)。

我正在使用以下代码(正在使用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。它几乎看起来(从DOM树)一个IFrame在IE8中被部分加载,但只是辍学。

1 个答案:

答案 0 :(得分:2)

Google的代码使用for (var x in array),在扩展Array.prototype时,某些浏览器出现问题。

为什么他们没有使用.length属性进行迭代,或者检查hasOwnProperty超出了我的范围,但这似乎是手头的问题。

由于Backbone.js包含在项目中,需要Underscore.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

给任何人编写JavaScript的注释,除非你明确检查hasOwnProperty,否则请避免使用for..in。这适用于数组和对象。

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

    //your handling here
    ...
}