2009-04-12 7 views
0

私はページエディタを構築するためにexpreimentingしていました。 1つの問題は、私をファイアフォックスに夢中にさせた。なぜポップアップアラートが "designMode"に影響するのですか?

ページのコードは以下の通りです:

<body> 
<iframe WIDTH=200 HEIGHT=200 id="myEditor"></iframe> 
<script> 

    function getIFrameDocument(sID){ 
     // if contentDocument exists, W3C compliant (Mozilla) 
     if (document.getElementById(sID).contentDocument){ 
      alert("mozilla"); // comment out this line and it doesn't work 
      return document.getElementById(sID).contentDocument; 
     } else { 
      // IE 
      alert("IE"); 
      //return document.getElementById(sID); 
      return document.frames[sID].document; 
     } 
    } 

    getIFrameDocument("myEditor").designMode = "On"; 

</script> 

</body> 

それはちょうどMozillaのやり方やIEの方法で、「のdesignMode」を設定するapproprateであるかどうかを確認してください。ページが読み込まれると、「Mozilla」がポップアップします。 iframe領域をクリックすると、フォーカスがiframeにあり、キーボードで入力できます。

これはうまく見えますが、私が行をコメントアウトするとき"alert(" mozilla "); "、それは動作しません。 FireBugが示すように、 "designMode"は "オフ"です。

これは配線されています。アラートがDOMとJavaScriptに影響する理由 ところで、私のFirefoxは3.0.6です。

答えて

2

アラートにより、iframeに読み込み時間が与えられるためです。 iframeドキュメントが読み込まれた後にのみ、designModeを「on」に設定する必要があります。

iframe.onload = function() { 
    doc.designMode = "on"; 
}; 
+0

ありがとうございます。修正はそれを動作させる! 「iframeを読み込んだ後にdesignModeをオンにすることができます」はFirefoxにのみ適用されます。 IEにはこのような制限がないようです。 –

+0

私はこのことを覚えていません。前回私がdesignModeで遊んでいたとき、私は両方のブラウザで "onload"を適用しましたが、ええ、私はまずFFでそれを観察しました。とにかく、IEで動的に生成されたiframeで問題が発生したことを覚えています。だからあまりにも注意してください。 –

関連する問題