是否可以从所有浏览器窗口访问Javascript对象?
是否可以从所有浏览器窗口访问javascript对象? 是否存在要存储数据的全局对象 例如:我们希望将多个打开或以后打开的窗口中的信息放在一个窗口中是否可以从所有浏览器窗口访问Javascript对象?,javascript,browser,javascript-objects,Javascript,Browser,Javascript Objects,是否可以从所有浏览器窗口访问javascript对象? 是否存在要存储数据的全局对象 例如:我们希望将多个打开或以后打开的窗口中的信息放在一个窗口中 谢谢只要一个窗口从另一个窗口打开,并且它们打开同一域中的页面,就可以相互访问。如果使用window.open方法,将获得对新窗口的窗口对象的引用,并且新窗口中的window.opener属性将指向该窗口的打开位置 如果打开浏览器的新实例,则窗口完全分开,客户端脚本无法直接通信。即使您在同一实例中的新窗口中打开页面,它们也无法通信,因为它们彼此不知道
谢谢只要一个窗口从另一个窗口打开,并且它们打开同一域中的页面,就可以相互访问。如果使用
window.open
方法,将获得对新窗口的窗口对象的引用,并且新窗口中的window.opener
属性将指向该窗口的打开位置
如果打开浏览器的新实例,则窗口完全分开,客户端脚本无法直接通信。即使您在同一实例中的新窗口中打开页面,它们也无法通信,因为它们彼此不知道。如果您的目标是现代浏览器,则可以使用HTML 5存储。 正如@Guffa所说,您可以在父窗口和子窗口之间进行通信
即使没有存储也很容易。您可以通过window.open、“javascript:”使用目标将信息传递到目标窗口,甚至在它不存在时初始化它 例如: 您有一个页面“mypage.html”,其中有一个javascript对象myObject,并且希望从浏览器中的任何窗口传递信息foo='hello' mypage.html:
....
var myObject = {
qs = {},
init: function()
var b = window.location.href.split("?");
if(b.length > 1){
var p = b[1].split("&");
for(var i = 0; i < p.length; i++){
var c = p[i].split("=");
qs[c[0]] = c[1];
}
}
this.doFoo();
},
doFoo: function(){
var foo = this.qs.foo;
....
}
...
};
myObject.init();
...
setTimeout仅适用于chrom,因为他获得了“window.location.href”属性不在启动时使用。允许哪些页面读取/编辑该对象的数据…?如果您使用AJAX在服务器端存储数据,这将是一种不同的情况,以前对此已经有过回答。AJAX对我们来说不是解决方案,因为我们使用基于javascript的编辑器,可以处理多个文件。每个文件都从不同的窗口打开应在同一编辑器中打开。所有浏览器都在同一域中?需要支持哪些浏览器?您可以在cookie中存储数据。但在这种情况下,所有浏览器窗口的基本URL必须相同。是的,在同一域中。浏览器:FF、IE和Chrome
window.open(
'javascript:if(typeof(myObject) == "undefined"){'
+ 'setTimeout(\'window.location.href = "mypage.html?foo=hello"\', 10);}'
+ 'else{myObject.qs={}; myObject.qs.foo="hello"; myObject.doFoo();}'
, "mypage"
);