使用对框架的jQuery引用访问框架中的元素

时间:2010-07-29 00:45:00

标签: javascript jquery

我有一个嵌套在iFrame中的框架。 <iframe>..<frameset..><frame id="report">。我有一个jQuery引用myFrame到报表框架。我对html没有控制权。我试图修改框架中的元素。 contents()不适用于框架。我尝试使用像myFrame.document&amp;这样的上下文。 myFrame.contentDocument但它们会出错。

如何使用jQuery引用框架的文档或内容? jQuery引用是否与javascript引用不同?

此外:

一切都在同一个领域。我知道浏览器的跨域安全块。

ADDITION2:

我在原始问题中有一些HTML代码,并没有注意到它们被隐藏了。

3 个答案:

答案 0 :(得分:4)

你框架内的框架是否与框架的容器位于同一个域中?由于浏览器的安全限制,您现在应该知道它们是否位于同一个域中,您无法操纵它。

  

jQuery引用是否与a不同   javascript参考?

jQuery是Javascript ,它在核心下做了很多分支,所以你不必做很多肮脏的工作。

修改:由于未提供代码,因此必须自行制作演示。

http://medero.org/frame.html

$('iframe').contents().find('frame').get(0).contentWindow.document

未在IE中测试。

澄清......

  • $('#el')返回一个jQuery对象。
  • $('#el').get(0)返回类似jQuery数组的对象中的第一个元素,即对真实DOM元素的引用。

答案 1 :(得分:2)

Yo dawg ...浏览器安全模型将阻止任何DOM访问来自不同域的iFrame。这是为了防止某人嵌入页面并破坏内容/布局,捕获表单数据等。

如果您有权访问iFramed页面的来源,您可以(通过与浏览器视口位于同一域的第三个iFrame)通过url参数向首页发送信息。否则你运气不好。

如果您只想更改页面布局,那么这样做没有太大意义,因为您无论如何都要进行css访问。但是,将iFrame的高度设置为iFrame的滚动高度非常有用。

修改我认为这就是您要找的内容:http://simple.procoding.net/2008/03/21/how-to-access-iframe-in-jquery/

$('#iframeID').contents().find('#someID').html();

答案 2 :(得分:-2)

这是选择器:

$(top.window.frames['frameID'][1].document).contents()[0].find('elementinFrame')

虽然每次都不起作用,但我仍然找不到原因。