js/jquery获取其他窗口的元素
1、获取 iframe 中的元素
1  | //获取iframe页面中的document  | 
2、获取父级窗口元素
1  | //js  | 
页面嵌套
1、 在window对象上共享父级对象
    效果,iframe 子页面 可以访问父级 window对象上共享的对象
     问题,如果两个窗口一级域名相同,只是二级域名不同,那么设置上一节介绍的document.domain属性,就可以规避同源政策,拿到DOM。
2、片段识别符
片段识别符(fragment identifier).
片段标识符(fragment identifier)指的是,URL的#号后面的部分,比如http://example.com/x.html#fragment的#fragment。如果只是改变片段标识符,页面不会重新刷新。
父窗口可以把信息,写入子窗口的片段标识符。
// 父页面
window.onhashchange() {
    var message = window.localtion.hash;
    ...
}
// 子页面
    parent.location.href = target + '#' + hash
    
3、window.name
浏览器窗口有window.name属性。这个属性的最大特点是,无论是否同源,只要在同一个窗口里,前一个网页设置了这个属性,后一个网页可以读取它。
// 父页面
1  | // 设置  | 
// 子页面
1  | // 访问  | 
4、window.postMessage
跨文档通信API(Cross-document messaging)
HTML5为了解决这个问题,引入了一个全新的API:跨文档通信 API(Cross-document messaging)。
这个API为window对象新增了一个window.postMessage方法,允许跨窗口通信,不论这两个窗口是否同源。
父窗口 aa.com
1  | var popup = window.open('http://bbb.com', 'title');  | 
子窗口 bb.com
1  | window.addEventListener('message', receiveMessage);  | 
message事件的事件对象event,提供以下三个属性。
-event.source:发送消息的窗口
-event.origin: 消息发向的网址
-event.data: 消息内容
页面间的通信机制
- 父子窗口通信
- postMessage
 
 - 浏览器 tab 页面通信
- localStorage
 - WebSocket
 - BroadcastChannel
 - SharedWorker
 
 
- 本文作者: 王不留行
 - 本文链接: https://wyf195075595.github.io/2022/06/17/programming/javascript/iframe/
 - 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!
 
		
                
                LiYongci
              
                
                衔蝉
              
                
                哈希米