jQuery 跨域 iframe 脚本

Posted

技术标签:

【中文标题】jQuery 跨域 iframe 脚本【英文标题】:jQuery cross domain iframe scripting 【发布时间】:2011-03-06 05:11:19 【问题描述】:

我正在尝试访问加载外部 URL 的 iframe 的 DOM。当然,由于跨域安全性,我收到“权限被拒绝”错误。我怎样才能使这项工作?我看到了一些用 json 完成的东西(但我无法从我的外部源获得一个 json 字符串)和一些用 html5 postmessage 完成的东西。

您可以在以下位置看到它: http://jsfiddle.net/QPBvJ/

代码是:

    $(document).ready(function()
     $('#get').live('click', function() 

        var currentIFrame = $('#frameDemo');
        currentIFrame.contents().find("a").css("background-color","#BADA55");

        alert ("done")
    );
    );

<iframe src="http://api.jquery.com/"   id='frameDemo'></iframe>
<button id="get">Get</button>

完成这项工作的最简单方法是什么。 谢谢

【问题讨论】:

您可以查看这篇与跨域请求相关的帖子:Loading cross domain html page with jQuery AJAX 【参考方案1】:

没有办法使这项工作。除非您尝试访问的外部域支持C.O.R.S、JSONP 或postMessage 之类的过程。

有一些例外(和往常一样):

例如,如果您正在处理一个 WebApp,您可以告诉您的用户他们必须授予对 cross-domain-calls 的访问权限。

例如在 Gecko/Firefox 中,你可以调用

netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead')

允许浏览器通过ajax/iframes 访问外部域。在这种情况下,用户必须设置

signed.applets.codebase_principal_support

发送至about:config 下的true 以完成这项工作。

在这个世界的Internet Explorers中,有一个类似allow cross-domain access的设置深深隐藏在security标签中,必须设置为enable

Chrome 允许使用命令行参数进行跨域调用:

chrome.exe --disable-web-security

【讨论】:

好的,谢谢你的信息。我正在研究这个,它应该可以工作。 这里您可以找到一些与跨域请求相关的信息:Loading cross domain html page with jQuery AJAX

以上是关于jQuery 跨域 iframe 脚本的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 跨域 iframe innerHtml

想利用jquery 改变 跨域 iframe 中的内容样式 该怎么做呢?

iframe跨域上传图片

使用 Jquery/CSS 进行跨域 iframe 控制/加载

jquery 如何实现跨域载入其他网站的页面内容

jQuery(javascript)无法跨域,怎么解决?是想获取iframe的框架里面的东西!!