我想在本地jquery对话框中创建跨域iframe内容。当我在同一个应用程序中开发它时一切都很好。当我尝试用另一个url在另一个应用程序上测试它时,我得到错误:
Error: Permission denied to access property ...
我知道,安全策略存在问题,但我需要在框架内进行选择。
让我告诉你我做了什么:
foo/plugin.js:
var frameDOM; function frameLoaded() { for (var i = 0; i < window.frames.length; i++) { if (window.frames[i].name == "frame-name-here") { frameDOM = window.frames[i].document; break; } } } $(function() { var frame = "<iframe src='http://bar:222/Home/frame' id='frame-content' name='frame-name-here' onload='frameLoaded()' />"; $("#dialog-form").dialog({ autoOpen: true, height: 450, width: 500, modal: true, resizable: false, buttons: { "Deliver": function () { //Some long code here } } create: function (event, ui) { $(this).append(frame); } });
加载帧后,我可以轻松访问帧内的内容:
$("#frame-input", frameDOM).val();
随着跨域我失去了这种可能性。有没有其他方法来控制选择器insode帧,取自另一个域?
附:我不需要Resize frame并且该解决方案没有帮助。我正在寻找替代方式,因为这个方法不起作用。
答案 0 :(得分:2)
不幸的是,除非您可以通过PHP或其他一些脚本语言(可能在PHP中使用cURL)获取HTML,然后将其从同一个域传递回您的JavaScript应用程序,这是不可能的。请参阅Same Origin Policy。