跨域iframe jquery选择器

时间:2012-10-27 13:28:27

标签: jquery iframe

我想在本地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并且该解决方案没有帮助。我正在寻找替代方式,因为这个方法不起作用。

1 个答案:

答案 0 :(得分:2)

不幸的是,除非您可以通过PHP或其他一些脚本语言(可能在PHP中使用cURL)获取HTML,然后将其从同一个域传递回您的JavaScript应用程序,这是不可能的。请参阅Same Origin Policy