子窗口的父窗口传递数据我有两个域说,X和Y,都是不同的服务器具有不同的IP上。从一个域到另一个DOMIAN
现在的情况是,域X的一个页面上有是打开域名为Y.上弹出一些数据
用户搜索弹出一个链接,然后点击“完成”
单击与搜索字段相关的值应传递到域X上的页面。
我正在使用PHP,HTML和js。
P.S:当域名是相同的,但我想在那里的域名和服务器是不同的解决方案中的事情的作品。
子窗口的父窗口传递数据我有两个域说,X和Y,都是不同的服务器具有不同的IP上。从一个域到另一个DOMIAN
现在的情况是,域X的一个页面上有是打开域名为Y.上弹出一些数据
用户搜索弹出一个链接,然后点击“完成”
单击与搜索字段相关的值应传递到域X上的页面。
我正在使用PHP,HTML和js。
P.S:当域名是相同的,但我想在那里的域名和服务器是不同的解决方案中的事情的作品。
我在读它,虽然一个演示代码将是非常可观的 – 2011-05-16 06:25:21
有各地的演示。首先想想我们想要使用哪种技术。很抱歉,我没有时间粘贴4个示例或从头开始编写一些示例,因为我需要在两个域/子域上使用代码。如果您可以完全访问这两个域的代码,请尝试CORS。 – mplungjan 2011-05-16 06:29:10
好的,谢谢我会尝试CORS并检查它是否可以解决我的问题 – 2011-05-16 06:41:38
我送变量只是想补充一点,那就是poss IBLE从一个窗口,一个域的数据传递到一个窗口经由window.name
属性另一个域。当然,这个属性是不是为了这个目的,并语言纯化论者会恨我,这。然而,这是它是如何做的,快速和肮脏的:
在域X:
var PREFIX = "your prefix here";
// The second parameter of window.open() sets window.name of the child window.
// Encode JSON and prepend prefix.
window.open("http://domain-y.example.com/", PREFIX + JSON.stringify({"foo":"bar", "abc":123}));
在域Y:
var PREFIX = "your prefix here";
if(window.name.substr(0, PREFIX.length) == PREFIX){
// Remove prefix and decode JSON
var data = JSON.parse(window.name.substring(PREFIX.length));
// Do what you need to do with the data here.
alert(data.foo); // Should alert "bar"
}
的PREFIX
是可选的,但我更喜欢把它列入情况域Y由设置window.name
属性的其他页面访问。还要注意,你并不需要使用JSON(如果你正在处理恐龙浏览器,你不应该这么做),但是我喜欢JSON,因为我可以在一个对象中传递多个属性。
编辑:如果你需要结构域是将数据传回域X,你可以有结构域是在window.name
保存数据并导航到域X的一个匆匆过客页面,该页面可以很容易地将数据传递给原来的窗口。试试这个:
在域Y:
// Somewhere earlier in the code:
var PREFIX = "your prefix here";
// Call this function when the Done button is clicked.
function passDataBack(data){
window.name = PREFIX + JSON.stringify(data);
window.location = "http://www.domain-x.com/passer.html";
}
在http://www.domain-x.com/passer.html:
// Somewhere earlier in the code:
var PREFIX = "your prefix here";
if(window.name.substr(0, PREFIX.length) == PREFIX){
// Remove prefix and decode JSON
var data = JSON.parse(window.name.substring(PREFIX.length));
// Send data to parent window
window.opener.processData(data);
}
在原来的页面,应该有一个叫做processData
函数,它的数据,并做一些事情吧。
这是一个很棒的黑客攻击。我已经在生产中使用它,没有任何问题。 – Shobhit 2016-04-11 12:37:53
我知道这是一个老问题,但我觉得这可能是一个更合适的问题的答案
应该将下面的代码添加到http://domain-x.com
window.addEventListener("message", function(event) {
console.log(event.data); // {user: 'data'}
}, false);
...在在http://domain-y.com
userClicksDone() {
try {
// This may throw an error in case of people access
// http://domain-y.com directly, not via popup from
// http://domain-x.com
//
window.opener.postMessage({user: 'data'}, 'http://domain-x.com');
} catch(e) { }
// Closes this popup
//
window.close();
}
更多信息在Mozilla。 致信@mplungjan
看看这个JSONP的例子:http://www.ibm.com/developerworks/library/wa-aj-jsonp1/ – wdm 2011-05-16 06:36:08