jquery如何获取iframe的document对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery如何获取iframe的document对象相关的知识,希望对你有一定的参考价值。

我用$(window.frames[0].document)这样或者dom对象document.getElementById(id).contentWindow都不行,最好的情况是alert对象为null,其他情况各种报错,jquery版本1.83,dtd是Xhtml 1.0 Transitional,求教如何获取这个document,或者操作iframe的滚动条,以前用的document.getElementById(id)。contentWindow.scrollTo()等方法都无效,奇了怪了~

1、你取得iframe的document的前提为这个iframe的地址是你域内的页面,
比如你设src为百度,取这个iframe的document时就会报拒绝访问的错误
2、我试过了 document.getElementById('myf').contentWindow.document 在ie与谷歌都行的
3、document.frames('iframename').document 这个方法只能在ie下面取得到
4、用火狐的firebug看看吧,有什么错都会显示出来,莫名其妙的事情什么时候都可能发生,
有时我直接取取window都报undefined
参考技术A

试试这样写:

$('#frameID').load(function () 
    $('#frameID').contents().find('a');//以iframe中找元素a为例
);

参考技术B

W3C的标准告诉我们,可以通过Dom对象的contentDocument属性来返回文档对象。

var doc = document.getElementById('mainFrame' ).contentDocument

IE8开始支持,如果你的项目不用兼容IE6,IE7的话使用这种方式最好。

IE6,IE7需要如此访问

var doc = document.frames['mainFrame'].document;

兼容方式:

var doc = document.getElementById('mainFrame' ).contentDocument || document.frames['mainFrame'].document;

以上是javascript原生方法:

使用Jquery则简单些

$("iframe").contents().find("selector")

iframe的document操作

参考技术A 获取所有的iframe标签

取完整iframe元素必须用getElementById的方法获取。

这里主要拿到iframe的document操作元素,有些浏览器可以直接contentDocument获取document操作元素,有些需要通过contentWindow.document获取

这样就能获取iframe所有的输入框标签。

*注意:当iframe跨域的时候,就无法获取iframe的document操作。

以上是关于jquery如何获取iframe的document对象的主要内容,如果未能解决你的问题,请参考以下文章

jquery获取iframe中的dom对象(两种方法)

Js/Jquery获取iframe中的元素 在Iframe中获取父窗体的元素方法

jquery方法操作iframe元素

iframe的document操作

如何获取iframe的父窗口的body标签啊

jquery判断iframe元素是不是在可视范围如果不是则滑动到可视区域