2

我了解如何打开窗口并在打开第二个窗口的原始窗口和第二个窗口之间进行通信以与原始窗口进行通信。但是,我有一种情况,我有原始页面和第 1 页。这些页面是 2 个不同的 PHP 脚本,它们作为单独的页面运行。

第 1 页打开一个窗口,其中包含客户网页。我们将此窗口称为 1。

原始页面打开窗口 2 和窗口 3。这些窗口加载到包含编辑工具的 php 文件中。我需要这些窗口 2 和窗口 3 与原始页面通信以编辑窗口 1 的内容。我不明白这怎么可能。我只看到有关原始页面的教程和书籍,它创建的窗口是唯一可以相互访问的窗口。所以,理论上我知道我不能让原始页面与窗口 1 通信,因为窗口 1 是由页面 1 创建的。

有没有办法解决这个问题?第 1 页打开内容...如图像、网页...等。我已经这样设置了。我需要能够让我的窗口工具访问内容窗口。这样他们就可以编辑网页或图像。如果可能的话,我该怎么做?

不,这不是同一个问题。我需要修改文档以更改 html。所以,使用 cookie 并不能解决我的问题。我需要编辑由不同网页打开的另一个窗口中的内容,但它仍然是同一域的一部分。

4

1 回答 1

2

05/21 更新

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

演示: http: //www.donboots.com/so/index.phphttp://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');

窗口A.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;

窗口B.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 回答