iframe父子页面相互调用js代码

当父页面和子页面都属于同一个域下,那么它们之间的js方法是可以相互调用的。在调用方法前指定function所属对象即可,父页面获取iframe所属对象方法为:iframe的name.window.方法名(),iframe页面获取父页面所属对象方法为:parent.方法名()。
但是这里有一个非常重要的限制,由于浏览器基于安全考虑,是不允许js在不同域名间进行通信,所以父子页面必须属于同一个域,即使是相同主域下的不同二级域也是不行的。
对于父子页面完全属于两个不同的域名,那么它们之间永远无法直接进行通信;如果父子页面是属于同一个主域下的不同二级域,则可以使用强制设置document.domain的方式来达到让其互相通信。document.domain默认值是window.location.host,可以js中设置为window.location.host的上一级域,但是不能为根域,例如:可以在页面www.duankou.com设置document.domain为duankou.com,但是不能设置为other.duankou.com或com。
document.domain在一定程度上解决了不同二级域名页面的跨域问题。需要注意的是,如果父页面包含多个iframe且设置了document.domain,那么要与其进行通信的iframe也必须设置document.domain。

iframe 父窗口和子窗口相互的调用方法

1、IE中使用方法:

父窗口调用子窗口:iframe_ID.iframe_document_object.object_attribute = attribute_value
例子:onClick="iframe_text.myH1.innerText='http://www.pint.com';"
子窗口调用父窗口:parent.parent_document_object.object_attribute = attribute_value
例子:onclick="parent.myH1.innerText='http://www.pint.com';"

2、Firefox中使用方法:

上面在IE下没有问题,但在firefox下不正常。在firefox下,应该是如下调用方法:

父窗口调用子窗口:window.frames["iframe_ID"].document.getElementById("iframe_document_object"­).object_attribute = attribute_value
例: window.frames["iframe_text"].document.getElementById("myH1").innerHTML= "http://hi.www.111cn.net";
子窗口调用父窗口:parent.document.getElementById("parent_document_object").object_attribute = attribute_value
例: parent.document.getElementById("myH1").innerHTML = "http://www.111cn.net";

具体例子如下:

父页面: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>

时间: 2024-12-24 20:35:04

iframe父子页面相互调用js代码的相关文章

父窗口与子窗口相互调用js代码(1/3)

父页面调用子页面中的js 我们先创建一个子窗体 复制代码 代码如下: var win $(function () { root = $('#root').val();//设置根目录 }); function openplayer(id, type, add) { //这里是用来限制同一个窗口只能弹出一次的 //其实就算不做限制,只要window.open参数中的name相同,就不会重复打开 //window.open中的参数可以参考别的文章,有很多 if (win == null || win.

原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法_javascript技巧

用原生js在父页面获取iframe子页面的元素,以及在子页面获取父页面元素,这是平时经常会用到的方法,这里写一个例子来总结下: 1.父页面(demo.html),在父页面修改子页面div的背景色为灰色,原来为红色: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

js iframe 父子页面之间的通信做法

js iframe 父子页面之间的通信做法 同域下父子页面的通信   父页面 parent.html <html> <head> <script type="text/网页特效"> function say() { alert("parent.html------>I'm at parent.html"); } function callChild() { //document.frames["myFrame&qu

iframe中子父类窗口调用JS的方法及注意事项_javascript技巧

一.前言 我页面用的是EasyUI的弹出窗口里面嵌入一个iframe. 第一:父窗口打开子窗口是一个新增用户信息的iframe子页面,点击保存后,子窗口iframe则去调用父窗口的function closeAddWindow()方法,让父窗口去关闭新增页面: 第二:父窗口打开一个设置用户权限的iframe子窗口,首先打开这个子窗口会全部加载数据库表中所有的存在的权限,然后子窗口需要把加载的权限信息拼接html  Append到一个ID为<table id="tb"><

使用JQuery 加载页面时调用JS的实现方法_jquery

1,window.onload = function() {}; 2,$(document).ready(function() {}); 一.一般的加载页面时调用js方法如下: window.onload = function() { $("table tr:nth-child(even)").addClass("even"); //这个是jquery代码 }; 这段代码会在整个页面的document全部加载完成以后执行.不幸的这种方式不仅要求页面的DOM tree

C++中调用JS代码的问题

前段时间开发了一个COM组件配合web前端使用,遇到了C++中调用JS代码的问题,在网上查了很多资料,现 总结一下,留作以后察看. C++中调用JS代码主要有两种情况:1. IE线程中调用:2. 其他线程调用 1. IE线程中调用:这种情况网上已经有很多资料,下面列出示列代码: C++代码 STDMETHODIMP CJsInvoker::InvokeJsFunc(LONG para1, LONG para2, VARIANT jsFunction, LONG* retValue) { CCom

代码迁移之后jsp页面写的js代码不执行。

问题描述 代码迁移之后jsp页面写的js代码不执行. $(function(){ alert("xxxx"); }); 控制台还报异常了. org.apache.catalina.core.ApplicationDispatcher invoke 严重: Servlet.service() for servlet jsp threw exception java.lang.NullPointerException at com.neusoft.wee.core.tag.Pages.st

htm调用JS代码_基础知识

1.用JS调用Htm,主页面怎么写? 在<body>与</body>之间合适位置写下这个代码: <script language="JavaScript" src="head.js"  type="text/JavaScript"></script> src="js文件名称和路径" 2.js文件怎么写? 比如:head.js内容这样写,把主页面里的htm需要转换成JS的代码,用J

jquery获取IFRAME框架页面元素值的代码

例子         $(window.frames["iframe1"].document).find("input[@type='radio']").attr("checked", true); 在IFRAME中操作 选中父窗口中的所有单选钮     $(window.parent.document).find("input[@type='radio']").attr("checked","t