PHP与JS实现iframe跨域及同域通讯的类库
116 浏览量
更新于2024-08-28
收藏 111KB PDF 举报
"这篇文章主要介绍了一个名为FrameMessage的JavaScript类,用于实现PHP主页面(main)与IFrame之间的通信,支持同域和跨域。它包括两个核心文件:FrameMessage.js和FrameMessage.class.php。FrameMessage.js提供调用接口,处理跨域场景,而FrameMessage.class.php负责处理跨域请求并返回执行所需的方法的JavaScript代码。该通信类支持传递各种类型的参数,如字符串、JSON对象和数组。由于旧版浏览器可能不支持JSON.stringify和JSON.parse,所以需要引入json2.js来确保兼容性。"
在PHP主页面(main)与IFrame之间进行通信通常涉及到安全性、跨域限制和数据交换等问题。FrameMessage类解决了这些问题,提供了一种有效的方法来实现通信。`FrameMessage.exec()`是类中的关键方法,接收四个参数:执行的页面URL(用于跨域)、要调用方法的IFrame名称、方法名以及一个包含方法参数的数组。
例如,以下代码展示了如何使用FrameMessage类在主页面调用IFrame中的方法:
```javascript
FrameMessage.exec('http://127.0.0.1/execB.php', 'myframe', 'fIframe', ['fdipzone', '{"gender":"male","age":"29"}', ['http://blog.csdn.net/fdipzone', 'http://weibo.com/fdipzone']]);
```
这段代码将向URL为'http://127.0.0.1/execB.php'的页面发送请求,并在名为'myframe'的IFrame中执行名为'fIframe'的方法,传递的参数包括字符串和数组。
另一方面,IFrame也可以调用主页面的方法,通过类似的方式进行通信。这个过程依赖于JavaScript的事件监听和发布机制,以及DOM操作来实现跨域消息传递。当在IFrame中执行方法时,FrameMessage.js会创建一个临时的iframe,用于同域通信或者处理跨域的预加载请求。
`FrameMessage.class.php`在服务器端接收这些请求,解析参数,并生成一段JavaScript代码,这段代码将被嵌入到调用页面中,以执行实际的方法。这种方法允许在安全的环境下执行跨域操作,因为所有的通信都在服务器端进行了验证和处理。
为了确保所有浏览器的兼容性,特别是对那些不支持JSON.stringify和JSON.parse的老版本浏览器(如IE6/7),开发者需要引入json2.js库。这个库由Douglas Crockford编写,提供了JSON对象的polyfill,使得老版本浏览器也能处理JSON数据。
FrameMessage类提供了一个强大的工具,使得PHP主页面与IFrame之间的通信变得更加简单和灵活,同时考虑到了跨域安全和兼容性问题。无论是同域还是跨域,它都能够有效地传递复杂的数据结构,如字符串、JSON对象和数组,从而促进了页面组件间的高效协作。
2013-12-30 上传
2019-05-25 上传
2023-07-29 上传
2023-10-19 上传
2024-02-23 上传
2023-04-28 上传
2023-07-28 上传
2023-06-02 上传
weixin_38717171
- 粉丝: 1
- 资源: 876
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载