【问题标题】:JQuery access iframe elementsJQuery 访问 iframe 元素
【发布时间】:2011-07-22 05:23:30
【问题描述】:

几分钟前,Google 推出了一个新徽标,但它在我的计算机上非常滞后。 我想继续使用当前的谷歌风格,但没有标志。 徽标元素的当前 ID 是“hplogo”。 所以我在 iframe 中创建了一个包含 google 的网页,我想使用 jquery 删除该元素。

<head>
        <script src="jquery.js" type="text/javascript"></script>
        <script type="text/javascript">
        $(document).ready(function(){
            $("#google").height($(window).height());

            setTimeout(function(){
                $("#google").contents().find("#hplogo").remove());
            }, 3000);
        });
        </script>

</head>
<body style="margin:0px;">
<iframe id="google" style="border:none;width:100%;overflow:auto;" src="http://www.google.com/">
</iframe>
</body>
</html>

我认为它不起作用,因为它不是同一个域。有没有办法解决这个问题?

【问题讨论】:

  • 根据 jQuery 文档:“如果 iframe 与主页位于同一域中,.contents() 方法也可用于获取 iframe 的内容文档。”
  • 这在另一个帖子中得到了回答。检查stackoverflow.com/questions/364952/…
  • &lt;iframe width="100%" height="500" src="http://www.google.com/custom?q=&amp;btnG=Search"&gt;&lt;/iframe&gt; 或只是click here。

标签: jquery iframe


【解决方案1】:

正如迈克尔所说,您的问题的答案是否定的。当我想用脚本“邀请所有朋友”并且 facebook 已经开始使用 iframe 时,我遇到了同样的问题。看看这个问题Check all checkboxes inside an iframe (when inviting guests to a facebook event)。我使用greasemonkey解决了我的问题,它的限制远低于标准浏览,所以你可以尝试检查it

【讨论】:

    【解决方案2】:

    你真的不能。除非绝对必须,否则不要使用 iframe。如果您想将一些远程内容拉入您的网站,您应该考虑使用 ajax,然后您可以随意修改 DOM。

    【讨论】:

      【解决方案3】:

      通常当你执行这样的操作时,你会使用类似 -

      $('iframe').contents().find('#yourElement')
      

      但是,考虑到安全问题,当 iframe 加载第三方域时,.contents().maps() 等功能会受到限制。在这种情况下,Google 不是您的本地域,因此您想要完成的任务无法实现。 希望这会有所帮助!

      【讨论】:

        【解决方案4】:

        由于安全问题,您不能使用 iframe 执行此操作。但是您可以使用 chrome 扩展程序或其他提供较少限制的东西。使用 chrome 扩展程序,您可以在 google.com 页面中注入您想要的任何脚本以删除徽标。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-22
          • 1970-01-01
          • 1970-01-01
          • 2012-07-08
          • 2010-11-29
          • 2016-03-22
          相关资源
          最近更新 更多