2013-08-16 109 views
1

我的网页上有一个广告单元,它只是一个iframe。加载页面时,可以在iframe中显示几个不同的广告。还有,尝试下面的方法渲染的第一个广告单元的iframe中的一段JavaScript代码:Firefox未检测到iframe加载事件?

document.open(); 
document.write(ad_tag1); 
document.close(); 

第一个广告单元将呈现的广告以一定的概率否则就会触发一个PostMessage的事件广告单位iframe表示没有要显示的广告。

如果有广告需要展示,一切都是金色的。但是,如果不是,广告单元将继续这样做:

document.open(); 
document.write(ad_tag2); 
document.close(); 

这将导致第二个广告代码,以使就好了。然而,问题在于Firefox似乎无法检测到第二个广告单元何时加载,即使它显然已经加载并且页面顶部的旋转器永远旋转,就好像还有东西要加载。

我也尝试过使用DOM操作方法,如innerHTML,但是产生了同样的问题。我也尝试过使用Prototype JS的内置更新方法,但也导致了相同的问题。

任何人有任何想法为什么Firefox这样做?我的代码完全适用于Chrome。

此外,我无法控制广告代码是什么。从我的角度来看,广告代码可能是第三方,也可能是黑匣子,因为在广告代码中可能包含脚本,可能会丢失iframe等。

回答

0

我以前见过这个,有好几次。它几乎总是由格式错误的HTML写入文档或HTML不完整造成的。试想一下:

<html> 
    <div id="myadd2"> 
     <p>Some stuff<p> 
    </div> 

没有结束</p>还没有结束<html>标签。这可能会导致Firefox认为文档仍在加载。直到它从服务器接收到一个EOF(关闭连接),或者它看到结束的HTML标记和格式良好的HTML块时才会完成。

可能是第二个添加包含不匹配的引号,未终结的html标记或不匹配的标记。通过xmllint --html运行HTML内容以查看它对它的看法。

+0

我不认为就是这样。即使做一样简单的东西到document.write:

你好

导致Firefox永远载入。 –