概念:
跨文档中说的文档,并非document对象,而是html文件文档。
定义:
夸文档消息传送cross-document-messaging,有时候也简称XDM,指的是来自不同域的页面传递消息。
使用场景:
内嵌框架iframe和其父文档相互进行数据传输或者通讯。

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title></head><body><iframe id="iframe" src="C:\Users\dzwang\Desktop\XDM\message.html" width="400" height="400" onload="sendMsg()"></iframe><div id="div1"></div><script>window.addEventListener('message', function(event){document.getElementById("div1").innerHTML = "from event.origin:" + event.origin + ", message event.data: " + event.data;});function sendMsg(){var iframeWindow = document.getElementById('iframe').contentWindow;var dataObj = { Name: 'David', Age: 26 };setTimeout(function (){iframeWindow.postMessage(JSON.stringify(dataObj), 'C:\Users\dzwang\Desktop\XDM\home.html');}, 2000);}</script></body></html>
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title></head><body><div id="div1">This is Div1</div><script>window.addEventListener("message", function(event){document.getElementById("div1").innerHTML = "from event.origin:" + event.origin + ", message event.data: " + event.data;setTimeout(() => {event.source.postMessage("I have received the message, Thanks!", event.origin);}, 2000);});</script></body></html>


作业:
【题目1】请阐述querySelector与querySelectorAll的作用与区别
**querySelector会返回第一个匹配的页面元素;querySelectorAll 会返回所有匹配的页面元素(NodeList),如果没有匹配,则返回空数组。
【题目2】请将下面1,3,5项p标签的文字设置为红色(red)
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><style>.p-con p:nth-child(2n+1){color: red;}/* .p-con p:nth-child(odd){color: red;} */</style></head><body><div class="p-con"><p>1</p><p>2</p><p>3</p><p>4</p><p>5</p></div></body></html>
【题目3】html5 History的出现主要为了解决哪些问题?常见应用场景是?**
解决单页应用程序的前进,后退的无刷新问题。
history是历史状态管理,允许操作浏览器曾经在标签页或者框架里访问的会话历史记录
利用HTML5 History API可以实现页面的无刷新跳转,而在以前是没有技术可以达到这点的。
【题目4】关于postMessage(message,orign,[transfer]),下列说法正确的是(多选) ABC
- A. postMessage()可以向另外一个窗口发送消息, 该方法是window下的一个全局方法
- B. 到目前为止,文档规定message只允许传字符串
- C. transfer是转移消息对象,可不传
- D. orign指定框架中文档来源的域,如来源匹配,消息会传递到内嵌框架中,否则postMessage()会在控制台报错。
