`
ghostjohn
  • 浏览: 18320 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

iframe父子兄弟之间调用传值(contentWindow && parent)

    博客分类:
  • jsp
 
阅读更多

学习一个知识点最好的方法就是自己动手去的实现一些简单的helloworld,虽然可以在网上可以找到很多总结,但自己实现的过程才是自己的,期间遇到问题并解决问题的过程也会让自己记忆理解更加深刻。

 

iframe的调用包括以下几个方面:(调用包含html dom,js全局变量,js方法)

主页面调用iframe;

iframe页面调用主页面;

主页面的包含的iframe之间相互调用;

 

主要知识点

1:document.getElementById("ii").contentWindow 得到iframe对象后,就可以通过contentWindow得到iframe包含页面的window对象,然后就可以正常访问页面元素了;

2:$("#ii")[0].contentWindow  如果用jquery选择器获得iframe,需要加一个【0】;

3:$("#ii")[0].contentWindow.$("#dd").val() 可以在得到iframe的window对象后接着使用jquery选择器进行页面操作;

4:$("#ii") [0].contentWindow.hellobaby="dsafdsafsdafsdafsdafsdafsadfsadfsdafsadfdsaffdsaaaaaaaaaaaaa"; 可以通过这种方式向iframe页面传递参数,在iframe页面window.hellobaby就可以获取到值,hellobaby是自定义的变量;

5:在iframe页面通过parent可以获得主页面的window,接着就可以正常访问父亲页面的元素了;

6:parent.$("#ii")[0].contentWindow.ff; 同级iframe页面之间调用,需要先得到父亲的window,然后调用同级的iframe得到window进行操作;

 

源码

main.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>显示图表</title>
<script src="http://www.cnblogs.com/http://www.cnblogs.com/scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
	var gg="dsafdsafdsafdsafsdaf";
	function ggMM() {
		alert("2222222222222222222222222222222");
	}
	function callIframeMethod() {
		//document.getElementById("ii").contentWindow.test();
		$("#ii")[0].contentWindow.test(); //用jquery调用需要加一个[0]
	}
	function callIframeField() {
		alert($("#ii")[0].contentWindow.ff);
	}
	function callIframeHtml() {
		alert($("#ii")[0].contentWindow.$("#dd").val());
		//alert($("#ii")[0].contentWindow.document.getElementById("dd").value);
		//alert($("#ii")[0].contentWindow.document.getElementById("dd").value);				
	}	
	function giveParameter() {
		$("#ii")[0].contentWindow.hellobaby="dsafdsafsdafsdafsdafsdafsadfsadfsdafsadfdsaffdsaaaaaaaaaaaaa";
	}
</script>
</head>
<body>
	<a href="#" onClick="giveParameter();">参数传递</a>
	<a href="#" onClick="callIframeMethod();">调用子iframe方法</a>
	<a href="#" onClick="callIframeField();">调用子iframe变量</a>
	<a href="#" onClick="callIframeHtml();">调用子iframe组件</a></br>	
	<iframe id="ii" src="frame.htm" width="100%" frameborder="0"></iframe>
	<iframe id="new" src="newFrame.htm" width="100%" frameborder="0"></iframe>
</body>
</html>

frame.htm

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>显示图表</title>
<script src="http://www.cnblogs.com/http://www.cnblogs.com/scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
<script type="text/javascript">

var ff="adfdasfdsafdsafdsaf";
function test() {
	alert($("#dd").val());
}
function callMainField() {
	alert(parent.gg);
}
function callMainMethod() {
	parent.ggMM();
}
function callMainHtml() {
	alert(parent.$("#ii").attr("id"));
}
function getParameter() {
	alert(window.hellobaby);
}
</script>
</head>
<body>
	<a href="#" onClick="getParameter();">接受参数</a>
	<a href="#" onClick="callMainMethod();">调用子iframe方法</a>
	<a href="#" onClick="callMainField();">调用主窗口变量</a>
	<a href="#" onClick="callMainHtml();">调用子iframe组件</a>	
	<input id="dd" type="text" value="1111111111"/>
</body>
</html>

 兄弟iframe页面 newIframe.htm

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>显示图表</title>
<script src="http://www.cnblogs.com/http://www.cnblogs.com/scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
function callLevelFrame() {
    var ff=parent.$("#ii")[0].contentWindow.ff;
    alert(ff);
}
</script>
</head>
<body>
    <a href="#" onClick="callLevelFrame();">调用兄弟iframe</a>    
    <input id="nn" type="text" value="sdafsdfsa"/>
</body>
</html>

 

分享到:
评论

相关推荐

    layer弹出子iframe层父子页面传值的实现方法

    本文介绍了layer弹出子iframe层父子页面传值的实现方法,分享给大家,具体如下: 父页面获取子页面元素 格式: $("#iframeID").contents().find("#eleID") 示例代码: father.html &lt;!DOCTYPE html&gt; &lt;...

    iframe子父页面调用js函数示例.docx

    "iframe子父页面调用js函数示例...4. JS 中 iframe 之间传值及子页面与父页面应用 5. javascript 猎取 iframe 里页面中元素值的方法 6. JS 实现 iframe 跨页面调用函数的方法 7. JS 如何对 Iframe 内外页面进行操作总结

    iframe父页面与子页面通信及相互调用方法

    iframe.contentWindow.postMessage('Hello from parent', '*'); ``` - 子页面接收消息: ```javascript window.addEventListener('message', function(event) { if (event.origin !== '...

    iframe父与子、子与子之间控制以及js相互调用实际例

    **iframe的父子、子与子之间的交互** 在Web开发中,有时我们需要在iframe中嵌入的页面与主页面,或者两个嵌套的iframe之间进行数据交换和功能交互。这可以通过JavaScript来实现,主要涉及以下几个方面: 1. **父...

    (js)父子页面相互调用总结(js)父子页面相互调用总结

    本文将详细介绍如何在父页面与子页面(包括通过`iframe`嵌入的页面和通过`window.open`打开的新窗口)之间实现数据共享和方法调用。 #### 1. 使用`iframe`实现父子页面间的通信 **父页面:** 父页面可以通过获取`...

    js中iframe调用父页面的方法.docx

    在处理`iframe`时,经常需要进行父子页面间的交互,例如从`iframe`调用父页面的函数或传递数据。下面我们将详细介绍`js`中`iframe`调用父页面方法的相关知识点。 1. **基本调用方式** 在`iframe`中的页面,可以...

    js操作iframe父子窗体示例

    总结以上内容,通过JavaScript操作iframe父子窗体可以实现父窗口和子窗口间的数据访问和方法调用。这种方式常用于网页中嵌入第三方页面时,父页面需要与嵌入的页面进行交互的场景。在进行操作时,需要注意同源策略的...

    如何实现iframe父子传参通信

    在网页开发中,有时我们需要在不同的页面之间传递参数,特别是在使用`iframe`嵌套页面时。`iframe`的父子通信可以让我们实现不同页面间的交互,无论是同源策略下的非跨域通信,还是需要应对跨域场景。下面我们将详细...

    父子页面数据相互传递

    子页面则可以调用`window.parent.postMessage`向父页面发送数据。 4. 使用框架(如`iframe`):如果子页面是嵌入在父页面中的,可以通过`iframe`的API进行通信。例如,父页面可以访问`iframe.contentWindow`对象与...

    layui框架中layer父子页面交互的方法分析

    if (iframeWin.contentWindow.doSubmit(top_iframe)) { top.layer.close(index); // 关闭对话框 top.window[iframeName].frames.location.reload(); // 刷新父亲 } }, cancel: function (index) {} }); } ```...

    页面间DOM相互访问

    这种交互通常发生在父子页面(通过iframe)或打开窗口与母窗口之间。本篇文章将详细探讨如何实现这些跨页面的DOM访问。 首先,我们来看**iframe子页面与父页面之间的访问**: 1. **访问DOM**: - 父页面访问子...

    HTML5 window/iframe跨域传递消息 API介绍

    `window.postMessage`不仅在简单的父子窗口或`iframe`通信中发挥作用,还可以用于实现更复杂的跨窗口通信场景,如多个`iframe`之间的通信,或者在不同窗口之间传递复杂的数据结构。在实际应用中,开发者可以结合`...

    Javascript iframe交互并兼容各种浏览器的解决方法

    - 使用parent关键字进行父子页面交互,这在多数浏览器中都得到了良好的支持。 - 实现了window对象的统一化,减少了在每次交互时需要重新引用的链路,从而提高运行速度。 - 编写代码变得轻松便捷,减少了出错的...

    javascript 调用其他页面的js函数或变量的脚本

    总结,JavaScript提供了一些机制来在不同页面之间共享和调用函数和变量,主要通过`window.opener`和`window.parent`属性。然而,由于同源策略的存在,实际应用中需要注意跨域问题,并考虑使用其他通信手段如`post...

    javascript实现从子页与父页传递参数

    8. **IFrame通信**:如果子页面是嵌入在父页面的IFrame中,可以通过`window.parent`或`window.frames`访问父页面,利用`contentWindow`属性进行通信。这种方法适用于同源策略下的父子页面交互。 每种方法都有其适用...

    jQuery实现frame之间互通的方法

    在网页开发中,有时我们需要在不同的`frame`之间进行数据通信或者函数调用,以便于实现页面间的交互。jQuery提供了一种方式来实现这样的功能,特别是在处理旧版本的IE浏览器时,它提供了一些兼容性的解决方案。本文...

    信息安全_对方不想说话并扔了个message.pptx

    2. 与`Window.parent`或`Window.frames[0]`进行父子窗口之间的通信。 3. 在跨域环境中,`postMessage`可用于安全地传递信息,避免了传统的`jsonp`、`Cors`、`document.domain+iframe`、`window.name`和`location....

    javascript父、子页面交互技巧总结

    通过上述方法,可以实现在父页面与子页面之间获取元素、调用函数或操作对象的交互。这些技巧为Web开发提供了便利,让开发者能够更好地管理复杂的页面结构,提高用户体验。 总之,合理利用JavaScript提供的window...

Global site tag (gtag.js) - Google Analytics