6

ユーザーが「page-1.htm」のリンクをクリックしてポップアップ ウィンドウを開くことができるようにする必要があります。次に、ユーザーがメイン ブラウザ ウィンドウで「page-2.htm」を参照したときに、ポップアップ ウィンドウを参照できるようにする必要があります。

「page-1.htm」の JavaScript

var playerWin = window.open("player.htm", "playerWin", "width=300,height=130");
playerWin.play("song.mp3");  // play() is a function in player.htm

「page-2.htm」の JavaScript

playerWin.play("tune.mp3");

page-2.htm のこのコードは、「playerWin が定義されていません」というエラーを生成します。page-2.htm でplayerWinという名前の変数が定義されていないため、これは理解できます。

私の質問は、page-2.htm からポップアップ ウィンドウを参照できますか?

4

5 に答える 5

5

オープナーページを離れた後でも簡単なテストを行いましたが、ポップアップにはまだ「オープナー」オブジェクトがあり、アクセスできます。したがって、オープナーをポーリングして参照をリセットするか、ページを離れた後にタイマーを追加して待機してから再リンクします。

1.htm

<script>
var w = window.open("p.htm", "playerWin", "width=300,height=130");
</script>
<a href="2.htm">2</a>

p.htm

<a href="javascript:opener.w=this;">re-link</a>

2.htm

<script>
    var w;
</script>
<a  href="javascript:alert(w);">check</a>
于 2009-01-22T23:42:26.330 に答える
3

答えはノーだ。ほとんどのブラウザーは、ウィンドウとドキュメントをあるナビゲーションから次のナビゲーションに完全に分離します。page2 に移動したときに存続するポップアップへの参照を配置できる場所はありません。

于 2009-01-22T23:08:16.273 に答える
1

受け入れられた回答は、Firefox 12.0 では機能しませんでした。私は現在、ページからページへの移動中または現在のページの更新中に、どのポップアップが開いているか閉じているかをアプリケーションが永続的に認識している必要があるプロジェクトに取り組んでいます。ポップアップが開いたり閉じたりするたびに、JavaScript Cookie を使用してクライアントに情報を保存しています。完璧ではありませんが、100% 誰にでもできるものを必要としない場合は良い選択肢です。ページのリロード中に JavaScript 変数を維持しようとすると、常に信頼性が大幅に低下するように思われます。また、ポップアップに関する情報をサーバーに保存しようとしてもまったく意味がありません。Cookie 以外に何が残るでしょうか?

于 2012-05-08T14:44:34.693 に答える
1

page-1.htm を iframe (ブラウザー ウィンドウ全体を占める) に配置する必要があります。次に、page-1 の親ウィンドウを介してポップアップを起動して通信します。

すなわち。(疑似コードでごめんなさい)

user clicks on link in page-1
page-1 asks it's parent window to open a popup
popup opens

user navigates away (in the iframe)
user clicks a link in page-2
page-2 asks it's parent window to close it's popup

すべてが同じドメイン上にあり、ナビゲーションが iframe 内にある限り、これは機能するはずです

于 2009-01-22T23:46:20.597 に答える
0

前にそれを見たことがありません...ページを別の方法で整理する必要があり、オプションがないため、これを行っていると思います。

ASP.NET を使用しているため、page-2 にセッション値を設定するだけです。次に、プレーヤー ページで AJAX タイマーを実行してセッション変数をチェックし、ポップアップ ウィンドウのハンドルを持っているため、適切なアクションを実行します。

于 2009-01-22T23:07:09.520 に答える