1

私のページには、単に iframe である広告ユニットがあります。ページが読み込まれると、iframe 内に表示できるいくつかの異なる広告があります。次の方法で最初の広告ユニットをレンダリングしようとする iframe 内の JavaScript の一部があります。

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

最初の広告ユニットは、ある程度の確率で広告を表示するか、表示する広告がないことを示すポストメッセージ イベントを広告ユニットの iframe に送信します。

表示する広告があれば、すべてがゴールデンです。ただし、存在しない場合、広告ユニットは次のことを行います。

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

これにより、2 番目の広告タグが正常に表示されます。ただし、問題は、Firefox が 2 番目の広告ユニットが読み込まれたことを検出できないように見えることです。

innerHTML などの DOM 操作メソッドも使用してみましたが、同じ問題が発生しました。Prototype JS の組み込み update メソッドも使用してみましたが、同じ問題が発生しました。

Firefox がこれを行っている理由を知っている人はいますか? 私のコードはクロムで完全に動作します..

また、広告タグが何であるかを制御することはできません。広告タグはサードパーティであり、広告タグにはスクリプトが含まれている可能性があり、iframe がドロップされる可能性があるため、私の観点からはブラック ボックスである可能性があります。

4

1 に答える 1

0

私はこれを以前に何度も見たことがあります。ほとんどの場合、不正な形式の HTML がドキュメントに書き込まれているか、不完全な HTML が原因です。検討:

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

</p>終了タグも終了タグもありません<html>。これにより、Firefox がドキュメントがまだロード中であると判断する可能性があります。サーバーから EOF を受信する (接続を閉じる) か、HTML の終了タグと整形式の HTML ブロックを確認するまで、処理は完了しません。

2 番目の追加に、引用符の不一致、終了していない html タグ、またはタグの不一致が含まれている可能性があります。HTML コンテンツを実行して、xmllint --htmlそれが何を考えているかを確認します。

于 2013-08-16T16:02:16.980 に答える