我正在尝试访问加载外部网址的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>
最简单的方法是什么? 谢谢
答案 0 :(得分:27)
没有办法让这项工作。除非您尝试访问的外部域支持C.O.R.S,JSONP或postMessage等过程。
有一些例外(像往常一样):
如果您正在处理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