假如我建立了两个页面,分别是demo1.html和demo2.html,我在demo1上给window添加了属性age,并且赋值,那么我在demo2.html如何获得demo1上设置的age属性? 一直以为window是个单例,但是好像不同的页面都会维持一个window对象,不知道是否正确?
欢迎选择我的课程,让我们一起见证您的进步~~
同源的话比较好做,上面都有提到。不同源的可以把参数传在url后面,然后在另一个页面中用js解析url
// Script in window.html var a = 0, b = window.open('window.html'); console.log(b.a); // 0
除此之外 iframe.contentWindow 也有同樣的效果。
當然能這樣做還有一個前提是滿足同源策略。
你可以使用 storage event 在几个页面间通信,这里有一些资料:
storage event
对,localstorage这玩意比较霸气。。
localstorage
Window.postMessagehttps://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage
通过url参数或hash传递参数,不需要window
可以用postmessage
a页面中 var _bp = window.open("b.html"); _bp.addEventListener("message",function(e){ _this.filterWindow.postMessage({age:"18"},"指定域"); } b页面 window.postMessage({ pageStatus:"ready" },""指定域"");}); window.addEventListener("message",function(e){ console.log(e.data.age); },false)
同源的话比较好做,上面都有提到。不同源的可以把参数传在url后面,然后在另一个页面中用js解析url
除此之外 iframe.contentWindow 也有同樣的效果。
當然能這樣做還有一個前提是滿足同源策略。
你可以使用
storage event
在几个页面间通信,这里有一些资料:对,
localstorage
这玩意比较霸气。。Window.postMessage
https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage
通过url参数或hash传递参数,不需要window
可以用postmessage
a页面中 var _bp = window.open("b.html");
_bp.addEventListener("message",function(e){
_this.filterWindow.postMessage({age:"18"},"指定域");
}
b页面 window.postMessage({
pageStatus:"ready"
},""指定域"");});
window.addEventListener("message",function(e){
console.log(e.data.age);
},false)