利用postmessage间接实现iframe跨域调用父页面js函数
2016-02-24 17:36
681 查看
父页面html代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript">
window.onload = function () {
//添加监听事件。
if (typeof window.addEventListener != "undefined")
window.addEventListener("message", func, false);
else if (typeof window.attachEvent != 'undefined')//兼容不支持addEventLinstener的IE。
window.attachEvent("onmessage", func);
}
//被调用的函数。
function invocationTarget(msg) {
if (msg)
alert(msg);
else
alert("~~~");
}
//监听事件回调函数。
function func(e) {
if (e.data.action == true)
invocationTarget(e.data.value);
}
</script>
</head>
<body>
<iframe src="子页面域名/HtmlPage.html" style="border:0px"></iframe>
</body>
</html>
子页面html代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript">
function invocation() {
var data = { action: true, value: 'hello world' };
//第一个参数表示要传递的参数,第二个参数表示要传递到的目标。
window.parent.postMessage(data, "父页面域名/HtmlPage.html");
}
</script>
</head>
<body>
<input onclick="invocation();" type="button" />
</body>
</html>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript">
window.onload = function () {
//添加监听事件。
if (typeof window.addEventListener != "undefined")
window.addEventListener("message", func, false);
else if (typeof window.attachEvent != 'undefined')//兼容不支持addEventLinstener的IE。
window.attachEvent("onmessage", func);
}
//被调用的函数。
function invocationTarget(msg) {
if (msg)
alert(msg);
else
alert("~~~");
}
//监听事件回调函数。
function func(e) {
if (e.data.action == true)
invocationTarget(e.data.value);
}
</script>
</head>
<body>
<iframe src="子页面域名/HtmlPage.html" style="border:0px"></iframe>
</body>
</html>
子页面html代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript">
function invocation() {
var data = { action: true, value: 'hello world' };
//第一个参数表示要传递的参数,第二个参数表示要传递到的目标。
window.parent.postMessage(data, "父页面域名/HtmlPage.html");
}
</script>
</head>
<body>
<input onclick="invocation();" type="button" />
</body>
</html>
相关文章推荐
- JQuery与iframe交互实现代码
- 用expression的一行代码解决iframe挂马的问题
- 用jquery修复在iframe下的页面锚点失效问题
- Firefox返回时Iframe的显示Bug的解决方法
- POST与GET方法的区别简要分析
- C#使用post发送和接收数据的方法
- PHP响应post请求上传文件的方法
- VB使用XMLHTTP实现Post与Get的方法
- 分享下GET和POST的真正区别
- php采用ajax数据提交post与post常见方法总结
- smarty巧妙处理iframe中内容页的代码
- ajax 的post方法实例(带循环)
- 一行代码解决网站防挂IFRAME木马方案,小鸽子序列(灵儿)
- C#实现的三种模拟自动登录和提交POST信息的方法
- ASP.Net Post方式获取数据流的一种简单写法
- C#中在WebClient中使用post发送数据实现方法
- ASP.NET的HtmlForm控件学习及Post与Get的区别概述
- asp教程中get post提交表单有5点区别
- asp.net 文件上传与刷新与asp.net页面与iframe之间的数据传输