javascript跨文档调用技术.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
JavaScript跨文档调用技术,简称XDM(Cross-Domain Messaging),是一种允许不同源的Web页面或脚本之间安全地交换数据的技术。这项技术主要应用于解决同源策略的限制,同源策略是浏览器的一个安全特性,它禁止了一个源的文档或脚本访问另一个源的资源。在JavaScript中,"源"由协议、主机名和端口组成,如果这三个元素不完全相同,就被视为不同的源。 在标题提到的示例中,开发者利用IFrame来实现跨文档调用。IFrame是一个嵌入在主页面中的小型浏览器窗口,可以加载来自不同源的HTML文档。通过创建一个隐藏的IFrame,并在IFrame的文档中注入脚本,可以将IFrame中的Array对象暴露给父页面,从而实现跨文档的数据交互。 创建一个IFrame元素并添加到页面中,然后利用`frames`对象访问IFrame的窗口,接着在IFrame的文档中写入脚本,将IFrame的Array对象赋值给父页面的`Array2`变量。这样,父页面就能使用IFrame中的Array实例,而不会受到本地Array对象的影响。 然而,这个技术存在一些问题。在Firefox和Safari中,当尝试将沙箱文档(IFrame文档)的Array实例转化为本地文档的Array实例时,会遇到类型转换,导致扩展的功能失效。例如,当在沙箱数组上使用`slice()`方法创建一个新的数组,然后检查新数组是否为Array的实例时,Safari和Firefox会返回错误的结果。同样,对于返回数组的方法,如`push()`,也会受到这种影响。 DE大神在其Base2类库中并没有采用这种技术,可能是因为它存在浏览器兼容性问题,或者有更好的替代方案。在实践中,跨文档调用技术不仅仅局限于数组对象的子类化,还可以用于实现跨域通信,如WebSocket、JSONP、CORS等。 在HTML5中,`postMessage`和`message`事件被引入,提供了一种更标准、更安全的跨窗口通信方式。`postMessage`允许向任何窗口发送消息,接收窗口通过监听`message`事件来处理这些消息。这种方式避免了对Array对象的子类化以及由此产生的问题,同时支持更多的浏览器。 此外,跨文档调用技术在富文本编辑器、实时通讯、单页应用(SPA)中的模块化、以及跨域资源共享(CORS)等方面都有广泛的应用。尽管存在浏览器差异和兼容性挑战,但随着Web技术的不断发展,这些问题逐渐得到改善,跨文档调用技术仍然是一项重要的Web开发技能。
剩余11页未读,继续阅读
- 粉丝: 62
- 资源: 7万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助