1

あるページは window.open() メソッドを使用して別のページ (openerdemo.html など) を開きますが、ポップアップ ページはオープナー ページのどのプロパティにもアクセスできません。

オープナーページコード:

<head>
    <meta http-equiv="content-type" content="html/text"; charset="utf-8"  >
    <title>windowdemo</title>

    <script language="JavaScript">

        function openWin(thisurl) {
            popWin = window.open(thisurl, 'popupPage', "width=480,height=272");  
        }

    </script>
</head>

<body>
    <input type="button" value="open" onClick="openWin('openerdemo.htm')"/>
</body>

ポップアップ ページ (openerdemo.htm) コード:

<html>
<head>
    <meta http-equiv="content-type" content="html/text"; charset="utf-8"  >
    <title>windowdemo</title>

    <script language="JavaScript">

        function closeWin() {
            window.opener.close();
            window.close();
        }
    </script>
</head>

<body>
<h1><a href="#" onClick="closeWin()">close all</a></h1>
</body>

Chrome で JavaScript コンソールを使用し、ポップアップ ウィンドウの cmd 行に「window.opener」と入力すると、次のように返されます。

window.opener
'ウィンドウ {}',

つまり、オープナー ウィンドウは null ではありませんが、すべてのプロパティが欠落しています。ただし、あるページが次のように新しいページを開く場合:

popWin = window.open('', 'popupPage', "幅=480,高さ=272");
popWin.document.write("これは popupPage です");

ポップアップ ページの window.opener は、オープナー ウィンドウへの参照であり、「window.opener」オブジェクトを使用してオープナー ウィンドウを制御できます。元:

<body>

<script type="text/javascript">
myWindow=window.open('','','width=200,height=100')
myWindow.document.write("This is 'myWindow'")
myWindow.focus()
myWindow.opener.document.write("This is the parent window")
</script>

</body>

このコードを FF、IE、および chrome でテストします。

ポップアップページでオープナーウィンドウを制御する方法を教えてもらえますか?

4

1 に答える 1

2

正常に動作しますが、クロスドメイン リクエストを作成しています。開いているウィンドウと開いたウィンドウが同じドメインにある場合、問題はありません。

注: Web サーバーを使用せず、ファイル システムのみを使用している場合 (file:/// はプロトコル)、これはクロスドメイン リクエストとして分類される場合があります。私はそれをテストしていませんが、ウェブ上で取得した場合、オープナーとオープニーの両方が同じドメインのサーバーである限り、すべてがうまくいくので安心してください.

編集

ローカル ファイル システムで簡単なテストを行ったところ、これは実際に当てはまります - これはクロスドメイン リクエストとして分類され、セキュリティ上の理由から禁止されています - 繰り返しますが、それを Web サーバーに配置しても問題にはなりません。同じドメインから両方のページを提供します。

于 2013-09-06T11:36:03.690 に答える