2

ウィンドウを開き、2 番目のウィンドウを開いた元のウィンドウと 2 番目のウィンドウの間で通信して、元のウィンドウに通信する方法を理解しています。ただし、元のページとページ 1 がある状況があります。これらのページは、別のページとして実行される 2 つの異なる PHP スクリプトです。

ページ 1 は、クライアントの Web ページを含むウィンドウを開きます。このウィンドウを 1 とします。

元のページは、ウィンドウ 2 とウィンドウ 3 を開きます。これらのウィンドウは、編集ツールを保持する php ファイルを読み込みます。ウィンドウ1のコンテンツを編集するために元のページと通信するには、これらのウィンドウ2とウィンドウ3が必要です。これがどのように可能かわかりません。元のページについて話しているチュートリアルや本を見ただけで、それが作成するウィンドウは互いにアクセスできる唯一のものです。したがって、ウィンドウ 1 はページ 1 によって作成されたため、元のページをウィンドウ 1 と通信させることは理論的にはできません。

これを回避する方法はありますか?ページ 1 は、画像、Web ページなどのコンテンツを開きます。私はすでにこのように設定しています。コンテンツ ウィンドウにアクセスするには、ウィンドウ ツールが必要です。そうすれば、ウェブページや画像を編集できます。可能であれば、どうすればこれを行うことができますか?

いいえ、それは同じ質問ではありません。HTMLに変更を加えるには、ドキュメントを変更する必要があります。したがって、Cookie を使用しても問題は解決しません。別の Web ページで開いていた別のウィンドウでコンテンツを編集する必要がありますが、それはまだ同じドメインの一部です。

4

1 に答える 1

2

05/21 更新

参考: https ://github.com/dboots/crossWindowAjax

デモ: http://www.donboots.com/so/index.phpおよびhttp://www.donboots.com/so/index2.php

これは、github repo/ にある /js/editor.js ファイルを使用するウィンドウ間のかなり初歩的なポーリング ソリューションです。

/index.php、/index2.php - これらは単にポップアップ ウィンドウを開きます。

/colors.php、/tools.php - poll() 関数を含むポップアップ ウィンドウで、set() 関数の使用例もあります。これらはどちらも /js/editor.js 内に存在するカスタム関数です

/js/editor.js - これは、ポップアップ ウィンドウと PHP ファイル (/js/ajax/process.php) の間のブリッジです。

/_classes/Editor.php - これは /js/ajax/process.php が変数を設定/取得するために使用するクラスです。この例では、$_SESSION 変数を設定/取得しますが、このクラスは、あらゆる種類のファイル ストレージ、データベースなどを使用するように拡張できます。

元の回答(関係ありません)

これは、ウィンドウ変数のスコープをいじることで解決できると思います。

このシナリオはニーズに合っていますか?

ウィンドウ 1

//-- window 1 variable
var page_variable = "page_variable";

//-- handle for window A
var windowA = window.open('windowA.php', 'windowA', 'height=200,width=600');

//-- handle for windowB
var windowB = window.open('windowB.php', 'windowB', 'height=400,width=500');

windowA.php

//-- local windowA variable
var windowA_variable = "windowA Variable";

//-- windowB variable accessed via opener (window 1)
var windowB_variable = opener.windowB.windowB_variable;

//-- window 1 variable
var page_variable = opener.page_variable;

windowB.php

//-- local windowB variable
var windowB_variable = "windowB Variable";

//-- windowA variable accessed via opener (window 1)
var windowA_variable = opener.windowA.windowA_variable;

//-- window 1 variable
var page_variable = opener.page_variable;
于 2015-05-12T20:59:28.820 に答える