在父页面调用子页面的JS方法

本文介绍了一种在父页面与子页面(iframe)之间互相调用JavaScript方法的技术方案。通过设置正确的iframe名称属性并使用window对象,实现了父页面调用子页面及子页面调用父页面的功能。

今天弄了一天了,终于在网上找到了解决办法

注意:问题是在父页面调用子页面的方法。。。。。

父页面:parent.html

复制代码 代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>parent</title>
<script>
 function parentFunction() {
  alert('function in parent');
 }

 function callChild() {
  child.window.childFunction();
  /*
   child 为iframe的name属性值,
   不能为id,因为在FireFox下id不能获取iframe对象
  */
 }
</script>
</head>
<body>
<input type="button" name="call child"  value="call child" onclick="callChild()"/>
<br/><br/>
<iframe name="child" src="./child.html" ></iframe>
</body>
</html>


子页面:child.html
复制代码 代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>child</title>
<script>
 function childFunction() {
  alert('function in child');
 }

 function callParent() {
  parent.parentFunction();
 }
</script>
</head>
<body>
<input type="button" name="call parent" value="call parent" onclick="callParent()"/>
</body>
</html>


大家可以根据自己的需求修改相应的代码即可。。。。。。。
在JavaScript中,如果父页面想要调用页面(通常是指嵌套在`<iframe>`、`window.open()`或者`document.domain`设置相同的域下的其他HTML文档)的方法,可以使用以下几种方法: 1. **通过`postMessage` API**: 父页面可以通过`window.postMessage()`向页面发送消息,然后在页面的`window.onmessage`事件处理函数中接收并响应。例如: ```javascript // 父页面 window.parent.postMessage({ action: 'callMethod', data: 'methodToCall' }, '*'); // 页面 (假设有个名为`handleMessage`的方法) window.addEventListener('message', function(e) { if (e.origin === 'http://parent.com') { // 检查来源 if (e.data.action === 'callMethod') { handleMethod(e.data.data); } } }); function handleMethod(methodName) { // 执行页面方法 } ``` 2. **全局变量或命名空间**: 如果页面允许,父页面可以在其窗口作用域下设置全局变量,然后在页面中访问。但这不是推荐的做法,因为会增加污染。 3. **iframe通信**: 对于同源的`<iframe>`, 可以利用`contentWindow`属性直接访问到页面的`window`对象来调用方法,但这同样有安全限制。 4. **使用Web Workers**: Web Workers提供了一种异步计算的方式,但是它们并不能直接调用父页面方法,需要通过事件通信。 在所有这些情况下,注意遵守跨域规则以及安全性考虑。同时,尽量避免对页面的行为有过多的控制,以保持良好的模块化和分离原则。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值