0

ポップアップ ウィンドウの URL / 場所を取得する方法はありますか?

コード:

<html>
   <head>
   <script>
   function openWin()
   {
      myWindow=window.open('http://www.google.com','','width=200,height=100');
      console.debug(myWindow.location.href);
      console.debug(window.location.href);
   }
   </script>
  </head>

  <body>
    <input type="button" value="Open window" onclick="openWin()" />
  </body>
</html>

最初のコンソールが印刷されますabout:blank

2 番目のコンソールは現在のページの URL を出力しますが (つまり、上記のコードの URL ですが、ポップアップ ウィンドウの URL は出力しません)。

最初のコンソールが場所 (つまりhttp://www.google.com ) を出力しないのはなぜですか?

誰でもこれで私を助けることができますか?

前もって感謝します。

4

2 に答える 2

1

location.href@Hg3 が言うように、 for にはアクセスできませんmyWindowwindow.open空の を返しますDOMWindow

window.openただし、開いたすべてのウィンドウの単純な配列を上書きして維持することはできます。

//override window.open
var windows = [];
window._open = window.open;
window.open = function(url, name, params){
    windows.push(name, url);
    return window._open(url, name, params)
}
//function return href by name
function hrefByName(name) {
    var index=(windows.indexOf(name));
    return (index>-1) ? windows[index+1] : 'undefined';
}

//modified openWin function
function openWin(url, name) {
    var params='width=200,height=100';
    window.open(url, name, params);
    //test, ouput current url and the windows array
    console.log(hrefByName(name));
    console.log(windows);
}

テスト マークアップ :

<input type="button" value="google" onclick="openWin('http://google.com', 'google')" />
<input type="button" value="bing" onclick="openWin('http://bing.com', 'bing')" />
<input type="button" value="stackoverflow" onclick="openWin('http://stackoverflow.com', 'stackoverflow')" />

もちろん、動的に生成された URL を使用したセットアップがあると思います。ランダムな名前を作成するか、一意の番号を名前として渡すだけです。

于 2013-06-04T14:12:33.273 に答える
1

ブラウザーのセキュリティにより、スクリプトと同じドメインにないウィンドウからは URL を取得できないためです。そのため、コードが example.com で実行されている場合、example.com にもあるウィンドウの URL しか取得できません。

于 2013-06-04T13:51:12.047 に答える