8

jsBin に次のコードがあります: http://jsbin.com/iRoROvu/1/edit

基本的に、iframe 内にアンカーがあります。リンクをクリックしても、Chrome では何も起こらないことがわかりますが、Firefox では空白になります。

jsFiddle の同じコードは次のとおりです: http://jsfiddle.net/LbNwd/

JavaScript:

 var previewFrame = document.getElementById('preview');
    var preview =  previewFrame.contentDocument ||     previewFrame.contentWindow.document;     
    preview.open();
    preview.write("Hello World!<br/><a href='#'>Click me!</a>");
    preview.close();

HTML:

<iframe id="preview"></iframe>

この場合、Firefox を使用すると、既存の iframe 内に別の iframe が作成されます...そしてそれを続けます...「Inception」のように。ただし、Chrome では同じコードが正常に機能します。

誰でも理由を教えてもらえますか?

4

3 に答える 3

0

なんで?おかしな話ですが、「開始」動作は、iFrame 内の Firefox にとって「ページの先頭」が何を意味するかに関係しています。を使用#topすると、同じ結果が得られます。

理想的には、Labib's answer に記載されているように href='javascript:void(0)' を使用する必要がありますが、あなたがそれを制御できないと述べたので、ハックが必要なようです。

本当に醜い方法は、印刷されている出力を検索してhref="#"置き換えることです。

しかし、このような状況では、次のように、事態が悪化したことを検出し、その時点で何かを行う方が良いと思います。

if (frameElement && frameElement.id === 'preview') {       
    // Think of something clever here, like
    parent.location = parent.location;
}

これが実際の動作です: http://jsfiddle.net/ze3CR/show

于 2013-10-15T22:16:28.143 に答える