是否可以從所有瀏覽器窗口訪問JavaScript對象? 有沒有一個全局對象來存儲數據?從所有瀏覽器窗口都可訪問Javascript對象?
例如:我們希望將信息放置在多個打開或打開的窗口中的一個窗口中。
謝謝
是否可以從所有瀏覽器窗口訪問JavaScript對象? 有沒有一個全局對象來存儲數據?從所有瀏覽器窗口都可訪問Javascript對象?
例如:我們希望將信息放置在多個打開或打開的窗口中的一個窗口中。
謝謝
您可以通過使用目標的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();
...
呼叫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"
);
只需要CHROM的setTimeout的,因爲他在啓動時得到了 「window.location.href」 屬性沒有。
只要從另一個打開一個窗口,他們打開同一個域中的網頁,他們可以互相訪問。如果使用window.open
方法,則會獲得對新窗口的窗口對象的引用,並且新窗口中的window.opener
屬性指向它從中打開的窗口。
如果您打開瀏覽器的新實例,那麼這些窗口是完全獨立的,並且客戶端腳本無法直接進行通信。即使您在同一個實例中的新窗口中打開該頁面,也無法進行通信,因爲它們不知道對方。
如果您針對的是現代瀏覽器,則可以使用HTML 5存儲。 http://www.quirksmode.org/blog/archives/2009/06/html5_storage_t.html
作爲@Guffa表示,即使沒有存儲,您也可以輕鬆地在父窗口和子窗口 之間進行通信。
哪些頁面將被允許讀取/編輯該對象的數據...?如果您使用AJAX存儲數據服務器端,這將是一個不同的情況,它已經在SO上得到了回答。 – 2011-03-04 13:00:17
ajax對我們來說沒有任何解決方案,因爲我們使用了一個基於JavaScript的編輯器,它可以處理多個文件。 應該在同一個編輯器中打開從不同窗口打開的每個文件。 – felixsigl 2011-03-04 13:05:02
所有在同一個域?需要支持哪些瀏覽器? – 2011-03-04 13:05:44