`
paulfzm
  • 浏览: 874450 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

jquery iframe 操作

 
阅读更多

jquery iframe操作

使用jquery操作iframe

去掉iframe 的边界 frameborder="0"

1 内容里有两个ifame

<iframe id="leftiframe"...</iframe>
<iframe id="mainiframe..</iframe>

leftiframe中jQuery改变mainiframe的src代码:
$("#mainframe",parent.document.body).attr("src","http://www.baidu.com ")

2 如果内容里面有一个ID为mainiframe的ifame
<iframe id="mainifame"...></ifame>
ifame包含一个someID
<div id="someID">you want to get this content</div>
得到someID的内容

$("#mainiframe").contents().find("someID").html() html 或者 $("#mainiframe").contains().find("someID").text()值

2 如上面所示
leftiframe中的jQuery操作mainiframe的内容someID的内容
$("#mainframe",parent.document.body).contents().find("someID").html()或者 $("#mainframe",parent.document.body).contents().find("someID").val()

Jquery获取到 iframe 所属的父窗口的里面的id为xuan的 标签的

$(window.parent.document).find("#xuan").html(x);//

//js创建 元素 并追加到 父元素的 Iframe中的 元素中的dom操作问题:

详见链接:http://www.cssrain.cn/?p=1376

iframe中直接调用父窗口中的方法 :假设父窗口有个add的方法

self.parent.add();

===============================================================

IE和Firefox对iframe document对象的差异性

在IE6、IE7中,我们可以使用 document.frames[ID].document 来访问iframe子窗口中的document对象 ,可是这是不符合W3C标准的写法,也是IE下独有的方法,在Firefox下却不可以使用,Firefox下使用的是符合W3C标准的 document.getElementById(ID).contentDocument 方 法,今天我在写实例的时候,通过IE8进行测试,IE8也是使用的符合W3C标准的 document.getElementById(ID).contentDocument 方法。所以我们可以写一个在IE和Firefox下通用的获取iframe document对象的函数—getIFrameDOM:

function

 getIFrameDOM(

id)

{

  return

 document.getElementById

(

id)

.contentDocument

 ||

 
document.frames

[

id]

.document

;

 }

P.S. :如果我们要获取iframe的window对象 ,而不是document对象,可以使用document.getElementById(ID).contentWindow的方法。这样我们就可以使用子窗口中的window对象了,比如子窗口中的函数。

在子窗口使用父窗口的函数,获取父窗口document对象


在子窗口中,我们可以通过parent 就可以获得父窗口的window对象,如果假如我们在父窗口有一个函数为getIFrameDOM,我们可以通过parent.getIFrameDOM来调用,同理我们使用parent.document就可以在子窗口中访问父窗口的document对象了。

使用JavaScript进行iframe的DOM操作实例

首先,我们在父窗口中引入两个iframe子窗口,ID分别为wIframeA、wIframeB,地址分别为:a.html、b.html。
父窗口主要HTML代码如下:

 


<div id="pHello" style="margin:10px auto;width:360px;height:30px;">此处可通过iframeB的
JavaScript函数,来替换哦~</div> <iframe id="wIframeA" name="myiframeA" src="a.html" 
scrolling="no" frameborder="0"></iframe> 
<iframe id="wIframeB" name="myiframeB" src="b.html" scrolling="no" frameborder="0"></iframe>

 

在子窗口A、B中我放了一个ID为hello的P,以方便我们进行DOM操作演示,子窗口A、B的主要HTML代码如下:

<p id="hello">Hello World!</p>

1、在iframe中,父窗口操作子窗口的DOM

建好了父窗口跟子窗口,这样我们可以在父窗口中,通过以下iframeA()函数来把子窗口A更换P的背景颜色为红色:

function

 iframeA(

)

{

//给子窗口A改变ID为hello的背景色

  var

 a =

 getIFrameDOM(

"wIframeA"

)

;

  
a.getElementById

(

'hello'

)

.style

.background

 =

 "red"

;

 }

 
function

 getIFrameDOM(

id)

{

//兼容IE、Firefox的iframe DOM获取函数

 
 return

 document.getElementById

(

id)

.contentDocument

 ||

 document.frames

[

id]

.document

;

 }

2、在iframe中,子窗口操作父窗口的DOM

在子窗口中,我们可以方便的进行父窗口DOM操作,只需要在DOM操作之前添加亦歌parent对象的方法就可以啦,如:在上面的子窗口B中,我们可以使用下面的代码把,父窗口中ID为“pHello”的内容给替换掉:


-------------------

3、在iframe中,子窗口A操作子窗口B的DOM

既 然子窗口可以操作父窗口的window对象和document对象,那么子窗口也可以操作另外的子窗口的DOM啦~断桥残雪在子窗口B中可以直接 使用parent直接调用父窗口中的getIFrameDOM函数获得子窗口A的document对象,这样要修改子窗口A的内容就很简单啦,如以下的代 码:

var a= parent.getIFrameDOM ( "wIframeA" ) ;

===================================================================================

一个iframe高度自动变化的问题搞了我半天,网上找了下资料,不是很好,结合了一下jquery(版本1.3.2),4行代码即可,完美兼容IE、Firefox、Opera、Safari、Google Chrome,js如下:


function heightSet(thisFrame){
if($.browser.mozilla || $.browser.msie){
bodyHeight =window.frames["thisFrameName"].document.body.scrollHeight;
}else{
bodyHeight =thisFrame.contentWindow.document.documentElement.scrollHeight;
//这行可代替上一行,这样heightSet函数的参数可以省略了
//bodyHeight = document.getElementById("thisFrameId").contentWindow.document.documentElement.scrollHeight;
}
document.getElementById("thisFrameId").height=bodyHeight;

}

<iframe id="mainFrame" name="mainFrame" frameborder="0" scrolling="no" src="" onload=" heightSet(this) " >

</iframe>

引用
this 关键字在各种浏览器似乎有不同的意思,FF和IE必须要通过iframe的名字去得到内部页面高度,而其他浏览器则可以用this或ID

引用
都在说一个异步的问题,如果你ajax用得特别多,但又不想每次都去设置,那动态改变iframe肯定达不到你的代码清洁要求,没办法,要么你就脱离iframe。我只能说说一般处理方式,毕竟ajax或动态表单在一般应用中只占小数比例,异步请求后只需在后面加上:

Js代码

parent.window.heightSet();
原文地址:
分享到:
评论

相关推荐

    jquery iframe操作详细解析

    主要是对jquery中iframe的操作进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助

    Iframe模拟Jquery.Ajax

    本人开发的积累总结,Iframe模拟Ajax 可以跨越的操作。

    jQuery取得iframe中元素的常用方法详解

    本文实例分析了jQuery取得iframe中元素的常用方法。分享给大家供大家参考,具体如下: jquery取得iframe中元素的几种方法: 在iframe子页面获取父页面元素 代码如下: 复制代码 代码如下:$(‘#objId’, parent....

    jQuery中iframe的操作(点击按钮新增窗口)

    &lt;iframe&gt;也应该是框架的一种形式,它与&lt;frame&gt;不同的是,iframe可以嵌在网页中的任意部分。本文给大家介绍jQuery中iframe的操作(点击按钮新增窗口),需要的朋友参考下吧

    解析Jquery取得iframe中元素的几种方法

    iframe在复合文档中经常用到,利用jquery操作iframe可以大幅提高效率,这里收集一些基本操作,需要的朋友可以参考下

    jquery对iframe自适应高度插件

    jquery对iframe自适应高度插件是国外下载下来的。插件使用只要引用js文件就行,不用做任何别的操作完全自动化。

    jQuery控制iFrame(实例代码)

    用jQuery在IFRAME里取得父窗口的某个元素的值只好用DOM方法与jquery方法结合的方式实现了 1.在父窗口中操作 选中IFRAME中的所有单选钮$(window.frames[“iframe1”].document).find(”input[@type=’radio’]“)....

    jQuery操作iframe中js函数的方法小结

    本文实例讲述了jQuery操作iframe中js函数的方法。分享给大家供大家参考,具体如下: 1、jquery操作iframe中的元素(2种方式) var tha = $(window.frames[core_content].document).find(#trewuuu).html(); var thb ...

    Jquery iframe内部出滚动条

    Jquery 操作页面中iframe自动跟随窗口大小变化,而不出现滚动条,只在iframe内部出滚动条

    jquery如何实现在加载完iframe的内容后再进行操作

    怎么实现在加载完iframe的内容后才进行下一步操作,通过jquery可以实现,为iframe添加onload事件,具体如下,喜欢的朋友不妨参考下或许对大家有所帮助

    Jquery调用iframe父页面中的元素及方法

    对于javascript操作iframe父级页面元素的方法,大家应该都非常清楚了,下面结合当前非常流行的jquery分享一下如何使用jquery查找和操作iframe父级页面元素的实现代码。

    jquery 操作iframe的几种方法总结

    iframe在复合文档中经常用到,利用jquery操作iframe可以大幅提高效率,这里收集一些基本操作 DOM方法:父窗口操作IFRAME:window.frames[“iframeSon”].documentIFRAME操作父窗口: window.parent.document jquery...

    JQueryiframe页面操作父页面中的元素与方法(实例讲解)

    1)在iframe中查找父页面元素的方法:$(‘#id’, window.parent.document) 2)在iframe中调用父页面中定义的方法和变量:parent.methodparent.value 3)实例 1.父页面 代码如下:&lt;&#37;@ Page Language=”C#” ...

    jQuery获取iframe的document对象的方法

    获取iframe的document对象进行dom的操作,实现方法很多,下面是jquery的实现过程,喜欢玩iframe的朋友可以参考下

    JQuery跨Iframe选择实现代码

    $(‘#btnCancel’,$(‘#PopFrame’)[0].contentWindow.document) 从iframe页面中选择父页面中的元素: 代码如下: $(“#PopContainer”,parent.document) 以下内容是别的网友的解决方法:只好用DOM方法与jquery方法...

    同域jQuery(跨)iframe操作DOM(实例讲解)

    本篇文章主要是对同域jQuery(跨)iframe操作DOM进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助

    利用JQuery操作iframe父页面、子页面的元素和方法汇总

    iframe在复合文档中经常用到,利用jquery操作iframe可以大幅提高效率,本文主要给大家分享了关于简单使用JQUERY来操作IFRAME的一些记录,这个使用纯JS也可以实现。下面话不多说了,来一起看看详细的介绍吧。 第一、...

Global site tag (gtag.js) - Google Analytics