3

次のような単純な JavaScript コードがあります。

<script type="text/javascript">
   function openWindow() {
     var mywindow = window.open("file.html");
     mywindow.document.getElementById("foo").innerHTML="Hey you!!";
   }
</script>

この関数は onclick イベントで呼び出されます。ウィンドウは正常に開きますが、要素の innerHTML は変更されません。これは私が所有するファイルであるため、どのセキュリティ ポリシーによってもブロックされていないことがわかっており、id 'foo' を持つ要素は確実に存在します。(これは DIV です)。.src や .value などの .innerHTML の他のバリエーションを試しましたが、何も機能しないようです。誰か提案はありますか?

4

2 に答える 2

8

ここでの問題は、ウィンドウの読み込みが完了する前に、新しいウィンドウの DOM にアクセスしようとしている可能性が高いことです。

次の点を考慮してください。

<script type="text/javascript">
   function openWindow() {
     var mywindow = window.open("file.html");

     // register an onload event with the popup window so that we attempt to 
      // modify it's DOM only after it's onload event fires.
     mywindow.onload = function() {
         mywindow.document.getElementById("foo").innerHTML="Hey you!!";
     }

   }
</script>
于 2012-05-13T04:52:51.283 に答える
1

注意点...タイミングを修正した後でも、インターネットやローカルサーバーではなくローカルマシンで開発している場合、これでエラーが発生する可能性があります。なぜそれが機能しないのかを理解するために 1 時間無駄にしただけで、同じコードをサーバーにアップロードしたところ、問題なく機能しました。2 年前にローカルで実行したコードを使用していましたが、別のブラウザーで数行を変更し、サーバーで実行するまでブラウザーが機能しなくなりました。これが誰かに役立つことを願っています。

于 2014-01-02T04:00:23.920 に答える