我们知道传统的HTML 规范中对于跨域的请求有这严格的限制,如果没有这个限制,将会发生很可怕的事情,设想一个场景当你在公司上班打开公司内部的管理信息系统,同时你打开了另一个外部网页页面, 那个外部网页中的动态脚本比如JS 脚本可以嗅探到你公司内部管理信息系统的内容,假如你公司的信息系统是一些敏感的信息时,其实你在不知不觉中已经泄漏了公司的信息,由此可能将会造成给公司很大的损失,所以浏览器是阻止这些跨域访问。
但是现实生活中有一些合理的跨域名站点间的交互,读者可能知道 传统HTML 规范中关于跨域的解决方法,
比如 iframe方式、jsonp方式等,今天我要说的是HTML5 中关于跨域数据交互方面的知识。
HTML5中引入了 一个新的API 称为 postMessage ,其实postMessage不管是否有跨域操作, 都建议使用postMessage 来传递消息。
废话不多说,看一个Demo 先。
我们配置两个域名 http://www.yuetong.com/
http://my.bbs.com/
在 http://www.yuetong.com/ 域下新建 comm_main.html, 地址 为http://www.yuetong.com/comm_main.html
文件内容如下
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>跨站通信 当前域 http://www.yuetong.com</title> <script type="text/javascript"> function sendMsg(){ if(typeof window.postMessage == undefined){ // alert("对不起 您的浏览器不支持 postMessage 特性"); return false; } var msg = document.getElementById("message").value; document.getElementsByTagName("iframe")[0].contentWindow.postMessage(msg,"http://my.bbs.com"); } var originWhiteList = ["http://my.bbs.com"]; function checkWhiteList(origin){ for(var i=0; i< originWhiteList.length; i++){ if(origin == originWhiteList[i]){ return true; } } return false; } /** 接受消息 */ function messageHandler(e){ if(checkWhiteList(e.origin)){ processMessage(e.data); }else{ // ignore message } } function processMessage(d){ alert(d); } window.addEventListener("message", messageHandler, true); </script> </head> <body> <h1>您好,我这里是http://www.yuetong.com/</h1> <input type="text" name="message" id="message" value=""/> <input type="button" name="handler" value="发生消息" onclick="sendMsg()"/> <br/> <iframe name="msg" src="http://my.bbs.com/comm_client.html" width="400" height="400"/> <p></p> </body> </html>
在 http://my.bbs.com/ 域下新建 comm_client.html, 地址 为http://my.bbs.com/comm_main.html,文件内容如下
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>跨站通信 当前域 http://my.bbs.com</title> <script type="text/javascript"> var originWhiteList = ["http://www.yuetong.com"]; function checkWhiteList(origin){ for(var i=0; i< originWhiteList.length; i++){ if(origin == originWhiteList[i]){ return true; } } return false; } function messageHandler(e){ if(checkWhiteList(e.origin)){ processMessage(e.data); }else{ // ignore message } } function processMessage(d){ var ta = document.getElementsByTagName("textarea")[0].value; ta += d + "\n"; document.getElementsByTagName("textarea")[0].value = ta; } function sendMsg(){ var msg = document.getElementById("message").value; window.top.postMessage(msg,"http://www.yuetong.com"); } window.addEventListener("message",messageHandler,true); </script> </head> <body> <h1>您好,我这里是 http://my.bbs.com/</h1> <input type="text" name="message" id="message" value=""/> <input type="button" name="handler" value="发生消息" onclick="sendMsg()"/> <textarea name="msg" rows="15" cols="40"></textarea> </body> </html>
配图1,当再输入框中输入"你好,朋友" 可以看到iframe窗口中 收到消息。
配图1
我们在iframe 窗口中输入“我很好" ,主窗口收到消息并弹出 提示框
其中最为重要 为增加 message 消息的监听和处理, 以及信任站点的配置。
以上是HTML5跨域信息交互技术之postMessage代码实例详解的详细内容。更多信息请关注PHP中文网其他相关文章!

Web标准和技术从HTML4、CSS2和简单的JavaScript演变至今,经历了显着的发展。 1)HTML5引入了Canvas、WebStorage等API,增强了Web应用的复杂性和互动性。 2)CSS3增加了动画和过渡功能,使页面效果更加丰富。 3)JavaScript通过Node.js和ES6的现代化语法,如箭头函数和类,提升了开发效率和代码可读性,这些变化推动了Web应用的性能优化和最佳实践的发展。

H5不仅仅是HTML5的简称,它代表了一个更广泛的现代网页开发技术生态:1.H5包括HTML5、CSS3、JavaScript及相关API和技术;2.它提供更丰富、互动、流畅的用户体验,能在多设备上无缝运行;3.使用H5技术栈可以创建响应式网页和复杂交互功能。

H5与HTML5指的是同一个东西,即HTML5。HTML5是HTML的第五个版本,带来了语义化标签、多媒体支持、画布与图形、离线存储与本地存储等新功能,提升了网页的表现力和交互性。

H5referstoHTML5,apivotaltechnologyinwebdevelopment.1)HTML5introducesnewelementsandAPIsforrich,dynamicwebapplications.2)Itsupportsmultimediawithoutplugins,enhancinguserexperienceacrossdevices.3)SemanticelementsimprovecontentstructureandSEO.4)H5'srespo

H5开发需要掌握的工具和框架包括Vue.js、React和Webpack。1.Vue.js适用于构建用户界面,支持组件化开发。2.React通过虚拟DOM优化页面渲染,适合复杂应用。3.Webpack用于模块打包,优化资源加载。

HTML5hassignificantlytransformedwebdevelopmentbyintroducingsemanticelements,enhancingmultimediasupport,andimprovingperformance.1)ItmadewebsitesmoreaccessibleandSEO-friendlywithsemanticelementslike,,and.2)HTML5introducednativeandtags,eliminatingthenee

H5通过语义化元素和ARIA属性提升网页的可访问性和SEO效果。1.使用、、等元素组织内容结构,提高SEO。2.ARIA属性如aria-label增强可访问性,辅助技术用户可顺利使用网页。

"h5"和"HTML5"在大多数情况下是相同的,但它们在某些特定场景下可能有不同的含义。1."HTML5"是W3C定义的标准,包含新标签和API。2."h5"通常是HTML5的简称,但在移动开发中可能指基于HTML5的框架。理解这些区别有助于在项目中准确使用这些术语。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

WebStorm Mac版
好用的JavaScript开发工具

Atom编辑器mac版下载
最流行的的开源编辑器

Dreamweaver Mac版
视觉化网页开发工具