父页给iframe传参数的方法

我们开发当中会遇到一些需要使用iframe的时候,一般的写法是:

<iframe name="enventApplyIframe" id="enventApplyIframe" marginheight="0" marginwidth="0" frameborder="0" height="0" width="0" scrolling="no"  src="eventInsurealarmAction.jsp"></iframe>

但有时头疼的是包含这个iframe的父页需要控制它,如父页里有查询条件区,而显示页在iframe里。这是就会出现怎么把这些条件给iframe里并且运行的问题。

为了容易理解直接直接写一个例子吧。



<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />

<title>iframe</title>

</head>



<body>

<form id="form1" name="form1" method="post" action="">

  sex:<input name="sex" type="text" id="sex" size="15" />

  age:<input name="age" type="text" id="age" size="15" />

  <input type="button" name="Submit" value="button" οnclick="javascript:goIframe();" />

</form>



<iframe name="result" id="result" marginheight="0" marginwidth="0" frameborder="0" height="500" width="500" scrolling="no"  src="result.jsp"></iframe>



</body>

</html>



<script language="javascript">



function goIframe(){

	var form = document.form1;

	var sex = form.sex.value;

	var age = form.age.value;

	var ifr = document.all("result");

	window.result.location.href=ifr.src +"?sex=" + sex + "&age=" + age;

	//window.result.location.href=search.do +"?sex=" + sex + "&age=" + age;

}



</script>
我想这段代码就不用解释了。
### 实现 iframe 面向子传递参数 在非跨域情况下,可以通过多种方式实现在面与子面之间的数据交换。一种常见的方式是在加载子面时通过 URL 参数传递信息给子面[^2]。 #### 使用 URL 查询字符串传递参数 当创建 `<iframe>` 标签时,在其 `src` 属性中附加查询字符串作为参数: ```html <iframe id="childFrame" src="https://example.com/child.html?param=value"></iframe> ``` 子JavaScript 可以解析这些参数并作出相应处理: ```javascript // 子面代码 document.addEventListener('DOMContentLoaded', function () { const urlParams = new URLSearchParams(window.location.search); let paramValue = urlParams.get('param'); console.log(`Received parameter value: ${paramValue}`); }); ``` #### 利用 postMessage API 进行通信 对于更复杂的场景或需要动态交互的情况,则推荐使用 `postMessage()` 方法来进行安全的数据输[^3]。 面发送消息至子面的例子如下所示: ```javascript var childWindow = document.getElementById('childFrame').contentWindow; childWindow.postMessage({ key: 'value' }, '*'); // '*' 表示允许任何源接收此消息; 生产环境中应指定确切的目标源 ``` 而子面则设置监听器等待来自面的消息: ```javascript window.addEventListener('message', function(event){ if (event.origin !== "http://parent-domain") return; // 安全检查 var dataFromParent = event.data; console.log(dataFromParent); }, false); ``` 以上两种方法均能有效地完成从面到子面的信息传递任务。选择哪种取决于具体的应用需求以及安全性考量。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值