iframe中子父类窗口调用JS的方法及注意事项_ng 设置允许iframe触发js

我是父窗口内容



```

FChild.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>
</head>
<body>
  <div style="border:1px solid red;"> 我是子窗体内容</div> 
   <div > <input type="button" id="btnSon" value="调用父窗口方法" /></div> 
   <script type="text/javascript">
 document.getElementById("btnSon").onclick = function () {
 parent.fatherMethod();
 }
 function sonMethod() {
 alert("子窗口方法!");
 }
 </script>
</body>
</html>

三、什么情况下使用到 myFrame.onload 或者 myFrame.attachEvent
这里使用的是easyui框架前端框架

<div id="divRoleUsers" title="设置用户角色" class="easyui-window" closed="true" collapsible="false" minimizable="false" maximizable="false" style="width: 140px; height: 250px; padding: 5px;">
   </div>
 <div > <input type="button" id="btn" value="设置用户角色" /></div> 
 <script type="text/javascript">
 $("#btn").click(function () {
showSetUserRoleWindow();
});
 //设置用户角色
 function showSetUserRoleWindow() {
 var getSelections = $("#tt").datagrid("getSelections");
 if (getSelections.length > 1 || getSelections.length == 0) {
 $.messager.alert("错误提示", "请选中一行数据!", "error");
 return false;
 }
 var data = getSelections[0]; //获取选中的一行所有json的数据
 //if ($("#divRoleUsers #iframe").length != 0) {
 // $("#divRoleUsers #iframe").remove();
 //}
 // $('#divRoleUsers').append("<iframe id='iframe' name='iframe' src='RoleUsers\_Update.aspx?UserID=" + data.UserID + "' width='100%' height='100%' frameborder='0'></iframe>");
 //错误做法!:上面src='RoleUsers\_Update.aspx?UserID=" + data.UserID + "' 这里通过拼接参数iframe的src,
 //然后通过子窗口 parent.document.getElementById("iframe").getAttribute("src");//获取父窗体iframe的src 发现根据获取不到UserID的值,为null,也是因为加载顺序先后的问题,导致我要用给iframe注册onload事件后才能获取到我需要的结果
 //if (myframe.attachEvent) {
 // myframe.attachEvent("onload", function () {
 // alert("Local iframe is now loaded.");
 // myframe.window.loadAllRole();
 // });
 //} else {
 // myframe.onload = function () {
 // alert("Local iframe is now loaded.");
 // myframe.window.loadAllRole();
 // };
 //}
 if ($("#divRoleUsers #myframe").length != 0) { //这一步是必须的!!!,因为不加这一句下面onload绑定事件只执行一次,我需要每次加载完iframe都调用一次子窗口的方法!
 $("#divRoleUsers #myframe").remove();
 }
 $('#divRoleUsers').append("<iframe id='myframe' name='myframe' src='RoleUsers\_Update.aspx' width='100%' height='100%' frameborder='0'></iframe>");
 if (myframe.attachEvent) {
 myframe.attachEvent("onload", function () {
 myframe.window.loadAllRole(); 
 myframe.window.loadUserRole(data.UserID);
 });
 } else {
 myframe.onload = function () {
 myframe.window.loadAllRole(); //调用子窗口iframe里面的方法加载所有的角色checkbox
 myframe.window.loadUserRole(data.UserID); //接着传递用户ID过去给子窗口的方法,给用户拥有的角色设置checkbox选中
 };
 }
 $('#divRoleUsers').window('open');
 }
 </script>

四、总结几个关键点吧
父子窗口方法的调用,注意加载的先后顺序才能获取到想要的结果,遇到问题常用alter()测试或者浏览器的开发者工具监控
以上内容就是本文中介绍iframe中子父类窗口调用JS的方法及注意事项,希望大家喜欢。

学习路线:

这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值