Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以从所有浏览器窗口访问Javascript对象?_Javascript_Browser_Javascript Objects - Fatal编程技术网

是否可以从所有浏览器窗口访问Javascript对象?

是否可以从所有浏览器窗口访问Javascript对象?,javascript,browser,javascript-objects,Javascript,Browser,Javascript Objects,是否可以从所有浏览器窗口访问javascript对象? 是否存在要存储数据的全局对象 例如:我们希望将多个打开或以后打开的窗口中的信息放在一个窗口中 谢谢只要一个窗口从另一个窗口打开,并且它们打开同一域中的页面,就可以相互访问。如果使用window.open方法,将获得对新窗口的窗口对象的引用,并且新窗口中的window.opener属性将指向该窗口的打开位置 如果打开浏览器的新实例,则窗口完全分开,客户端脚本无法直接通信。即使您在同一实例中的新窗口中打开页面,它们也无法通信,因为它们彼此不知道

是否可以从所有浏览器窗口访问javascript对象? 是否存在要存储数据的全局对象

例如:我们希望将多个打开或以后打开的窗口中的信息放在一个窗口中


谢谢

只要一个窗口从另一个窗口打开,并且它们打开同一域中的页面,就可以相互访问。如果使用
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"
);