我的网页上有一个广告单元,它只是一个iframe。加载页面时,可以在iframe中显示几个不同的广告。 iframe中有一段javascript尝试使用以下方法呈现第一个广告单元:
document.open();
document.write(ad_tag1);
document.close();
第一个广告单元会以一定的概率呈现广告,否则它会向广告单元iframe发送一个postmessage事件,表明没有广告可以显示。
如果要展示广告,一切都是金色的。但是,如果没有,广告单元将继续执行:
document.open();
document.write(ad_tag2);
document.close();
这会导致第二个广告代码呈现得很好。然而,问题是Firefox似乎无法检测到第二个广告单元何时已加载,即使它显然已经加载,并且页面顶部的微调器仍然会永远旋转,就好像仍然需要加载一样。
我也尝试过使用DOM操作方法,比如innerHTML,但是产生了同样的问题。我也尝试过使用Prototype JS的内置更新方法,但这也导致了同样的问题。
任何人都有任何想法为什么Firefox会这样做?我的代码完美适用于chrome ..
另外,我无法控制广告代码是什么。广告代码是第三方,从我的角度来看也可能是黑盒子,因为广告代码中可能包含脚本,可能会删除iframe等。
答案 0 :(得分:0)
之前我已经看过很多次了。它几乎总是由写入文档的HTML格式错误或HTML不完整引起的。考虑:
<html>
<div id="myadd2">
<p>Some stuff<p>
</div>
没有结束</p>
,也没有结束<html>
标记。这可能导致Firefox认为文档仍在加载。它在服务器收到EOF(关闭连接)或者看到关闭的HTML标记和格式良好的HTML块之前不会完成。
可能是第二个添加包含不匹配的引号,未终止的html标记或不匹配的标记。通过xmllint --html
运行HTML内容,看看它对它的看法。