1

私のWebページでは、この関数を使用して小さなポップアップウィンドウを表示します

function popup (url) 
{
     poppedUpWindow= window.open(url, "PopupWindow", "width=400,height=300");
     poppedUpWindow.focus();
     return false;
}

2 つのウィンドウ間でオブジェクトを共有する必要があります。私はこのようなことをやってみましたが、今はうまくいきます

poppedUpWindow.document.documentElement.addEventListener("load", foo, false);

私がこのようなことをすることも可能です

 function popup (url) 
    {
         poppedUpWindow= window.open(url, "PopupWindow", "width=400,height=300");
         var tmp = poppedUpWindow.document;
         tmp.write('<html><head><title>popup</title>');
         ....
         tmp.close();
         poppedUpWindow.focus();
         return false;
    }

しかし、このアプローチでは問題の解決がはるかに難しくなります。では、親ウィンドウからポップアップ ウィンドウに、またはその逆に情報を転送するにはどうすればよいでしょうか。

4

2 に答える 2

1

これが、同じ問題に直面している他の人のために問題を解決した方法です。ブラウザはクロムかファイアフォックスのどちらかを考えています。他のブラウザはテストしていません。JavaScript ファイル全体がロードされる前に、Chrome の「ロード」イベントが発生することがあります。

function popup (url) 
{
     poppedUpWindow= window.open(url, "PopupWindow", "width=400,height=300");
     poppedUpWindow.focus();


if(is_chrome)
         {
         window.setTimeout("doSomething()",300); //this value could vary! 300ms seemed fine to me!
         }
     else
         {
            fenster.addEventListener('load', doSomething, true); //  FireFox 
         }
 return false;
}

function doSomething()
{
    poppedUpWindow.postMessage("hi","*");
var a = poppedUpWindow.document.getElementById("b");
// do anything you want..

}

他のhtmlには、このメソッドがあるはずです

function receiveMessage(event)
{
  if (event.origin !== stringUrlOfFirstWebPage)
    { 
       return;
    }
    event.source.postMessage("hey!",event.origin);//talking back to the first web page
}
于 2013-07-05T14:54:58.457 に答える
1

postMessageのドキュメントから:

次のようなメッセージを送信します。

otherWindow.postMessage(message, targetOrigin);

otherWindow は、次の JavaScript を実行することで、ディスパッチされたメッセージをリッスンできます。

window.addEventListener("message", receiveMessage, false);

function receiveMessage(event)
{
  if (event.origin !== "http://example.org:8080")
    return;

  // ...
}

ブラウザのサポートに注意してください: http://caniuse.com/#feat=x-doc-messaging
IE 8 以降、Firefox 3 以降、Chrome 全バージョン、Opera 9.5 以降、Safari 4 以降

于 2013-07-04T16:19:49.047 に答える