jQuery跨域iframe脚本

时间:2010-06-21 08:35:37

标签: jquery cross-domain

我正在尝试访问加载外部网址的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/" width="80%" height="600" id='frameDemo'></iframe>
<button id="get">Get</button>

最简单的方法是什么? 谢谢

1 个答案:

答案 0 :(得分:27)

没有办法让这项工作。除非您尝试访问的外部域支持C.O.R.SJSONPpostMessage等过程。

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

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

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

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

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

signed.applets.codebase_principal_support
<{1>}下true下的about:config可以使其发挥作用。

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

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

chrome.exe --disable-web-security