我正在尝试访问加载外部URL的iframe的DOM。当然,由于跨域安全,我得到一个“Permission denied for”错误。我该怎么做这个工作?我看到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>
这样做最简单的方法是什么?
谢谢
解决方法
没有办法让这项工作。除非您尝试访问的外部域支持类似于
C.O.R.S,
JSONP或
postMessage的过程。
有一些例外(像往常一样):
例如,如果您处理WebApp,您可以告诉用户他们必须授予对跨域呼叫的访问权限。
例如,在Gecko / Firefox中,您可以调用
netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead')
这使得浏览器可以通过ajax / iframe访问外部域。在这种情况下,用户必须设置
signed.applets.codebase_principal_support
关于:config来做这个工作。
在这个世界的互联网探险者中,有一种称为类似的设置,允许跨域访问深度隐藏在安全选项卡中,必须将其设置为启用。
Chrome允许使用命令行参数进行跨域调用:
chrome.exe --disable-web-security