【问题标题】:Accessing an element in a frame using a jQuery reference to the frame使用对框架的 jQuery 引用访问框架中的元素
【发布时间】:2010-07-29 00:44:59
【问题描述】:

我有一个嵌套在 iFrame 中的框架。 <iframe>..<frameset..><frame id="report">。我有一个对报告框架的 jQuery 参考 myFrame。我无法控制 html。我正在尝试修改框架中的元素。 contents() 不适用于框架。我尝试使用 myFrame.document 和 myFrame.contentDocument 之类的上下文,但它们给出了错误。

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

补充:

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

附加2:

我的原始问题中有一些 html 代码,但没有注意到它们被隐藏了。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您的框架与框架的容器在同一个域中吗?您现在应该知道,如果它们不在同一个域中,由于浏览器的安全限制,您无法对其进行操作。

    jQuery 引用与 a 不同吗? javascript参考?

    jQuery IS Javascript,它在核心下做了很多分支,所以你不必做很多脏活。

    编辑:由于没有提供代码……只好自己做一个演示。

    http://medero.org/frame.html

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

    没有在 IE 中测试。

    为了澄清......

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

    【讨论】:

      【解决方案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();
      

      【讨论】:

      • 这是一个框架 Iam 目标。它不是 iFrame。它们在同一个域中。我正在寻找 jQuery 选择器语法。
      • 考虑到您没有指定它是否是同一个域,此外您没有发布完整代码或链接演示,我认为不赞成投票是不合理的。您还说“我无法控制 html”,这可能表明它可能不是同一个域。
      • 对不起,如果您不理解我的回答。我添加了一个指向解决方案的链接,并提供了应该选择 iFrame 内容的 jQuery sn-p。别忘了你也可以使用 .load() 通过 ajax 将内容带入同一页面。
      • 他指的是常规的frame 元素。 jQuery 的 contents 在内部检查 nodeName 是否为 iframe,因此它不会应用相同的代码,尽管从技术上讲它是相同的代码来获取引用。
      【解决方案3】:

      这是选择器:

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

      虽然它不是每次都有效,但我仍然在找出原因。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-13
        相关资源
        最近更新 更多