我有一个嵌套在iFrame中的框架。 <iframe>..<frameset..><frame id="report">
。我有一个jQuery引用myFrame到报表框架。我对html没有控制权。我试图修改框架中的元素。 contents()不适用于框架。我尝试使用像myFrame.document&amp;这样的上下文。 myFrame.contentDocument但它们会出错。
如何使用jQuery引用框架的文档或内容? jQuery引用是否与javascript引用不同?
此外:
一切都在同一个领域。我知道浏览器的跨域安全块。
ADDITION2:
我在原始问题中有一些HTML代码,并没有注意到它们被隐藏了。
答案 0 :(得分:4)
你框架内的框架是否与框架的容器位于同一个域中?由于浏览器的安全限制,您现在应该知道它们是否位于同一个域中,您无法操纵它。
jQuery引用是否与a不同 javascript参考?
jQuery是Javascript ,它在核心下做了很多分支,所以你不必做很多肮脏的工作。
修改:由于未提供代码,因此必须自行制作演示。
$('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')
虽然每次都不起作用,但我仍然找不到原因。