Javascript объект доступен из всех окон браузера? - PullRequest
1 голос
/ 04 марта 2011

возможно ли получить доступ к объекту javascript из всех окон браузера?например, существует ли глобальный объект для хранения данных?

: мы хотим поместить информацию в одно окно из нескольких открытых или более поздних открытых окон.

Спасибо

Ответы [ 3 ]

2 голосов
/ 04 марта 2011

Пока одно окно открывается из другого и они открывают страницы в одном домене, они могут обращаться друг к другу. Если вы используете метод window.open, вы получите ссылку на объект окна нового окна, а свойство window.opener в новом окне указывает на окно, из которого оно было открыто.

Если вы откроете новый экземпляр браузера, то окна будут полностью разделены, и клиентские сценарии не смогут напрямую взаимодействовать. Даже если вы откроете страницу в новом окне в том же экземпляре, они не смогут общаться, потому что они не знают друг друга.

1 голос
/ 07 марта 2011

Вы можете передать информацию в целевое окно через window.open, «javascript:», используя target, и даже инициализировать ее, если она не существует.

Например: у вас есть страница «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();
...

вызывающего html:

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"
);

setTimeout необходим только для chrom, потому что он получил свойство "window.location.href" не при запуске.

0 голосов
/ 04 марта 2011

Если вы ориентируетесь на современные браузеры, вы можете использовать хранилище HTML 5.http://www.quirksmode.org/blog/archives/2009/06/html5_storage_t.html

и, как сказал @Guffa, вы можете легко обмениваться данными между родительским окном и дочерним окном даже без хранилища.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...