我遇到了一个奇怪的问题,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中被部分加载,但只是辍学。
答案 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
...
}