我了解如何打开窗口并在打开第二个窗口的原始窗口和第二个窗口之间进行通信,以将其通信回原始窗口。但是,我有一个我的原始页面和第1页的情况。这些页面是2个不同的PHP脚本,可以作为单独的页面运行。
第1页打开一个带有客户端网页的窗口。我们将称此窗口1。
原始页面打开窗口2和窗口3。这些Windows负载在PHP文件中具有编辑工具。我需要这些窗口2和窗口3才能与原始页面进行通信以编辑窗口1的内容。我看不出这是怎么可能的。我只看到教程和书籍谈论原始页面及其创建的窗户是唯一可以互相访问的窗口。因此,我知道从理论上讲,我不能让原始页面与窗口1通信,因为窗口1是由第1页创建的。
。是,有任何方法可以解决这个问题吗?第1页打开内容...例如图像,网页...等。我已经以这种方式设置了它。我需要能够拥有我的窗口工具来访问内容窗口。这样,他们可以编辑网页或图像。如果可能的话,我该怎么办?
不,那不是同一问题。我需要修改文档以更改HTML。因此,使用cookie无法解决我的问题。我需要在另一个网页打开的另一个窗口中编辑内容,但它仍然是同一域的一部分。
更新了05/21
参考: https://github.com/dboots/crosswindowajax
演示: http://www.donboots.com/so/index.php and http://www.donboots.com/so/index2.php
这是使用github repo/
中的窗口之间的一个相当基本的投票解决方案/index.php,/index2.php - 这些只是打开我们的弹出窗口。
/colors.php,/tools.php - 我们的弹出窗口包含poll()函数,并且还具有使用set()函数的示例。这两个都是自定义函数,它在/js/editor.js
中/js/editor.js - 这是我们的弹出窗口和php文件(/js/ajax/process.php)之间的桥梁。
/_ class/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;