【问题标题】:How to access the XML document in an iFrame?如何访问 iFrame 中的 XML 文档?
【发布时间】:2010-07-19 15:34:02
【问题描述】:

我的页面上有一个 iFrame,它显示 XML 文档。

<iframe id="iFrame2" name="iFrame2"  width="100%" height="100%">

我需要从父页面访问 iFrame 中的 XML 文档。我该怎么做?

当我尝试时:

console.log(iFrame2.document);

我收到以下错误:

Permission denied for <http://localhost:3000> to get property Window.document from <http://www.imageshack.us>.

【问题讨论】:

    标签: html iframe


    【解决方案1】:

    查看 comp.lang.javascript 常见问题解答:

    http://www.jibbering.com/faq/#frameRef

    【讨论】:

    • 感谢您的回答。我不确定我是否正确阅读,但为了从 iFrame 获取信息,我是否必须从 iFrame 向父文档发送 postMessage?我无法控制 XML 文档,所以如果可以,我不确定是否可以做到。
    • @ben: postMessage 不会帮助您处理 XML;用于处理 HTML 文档。
    【解决方案2】:

    我不相信有一种跨浏览器的方式可以访问不同域上的 XML 文档。解决此问题的最简单方法是在您的服务器上设置一个小型代理来获取数据,然后简单地对服务器进行 Ajax 调用。

    我从来没有使用过 Rails,所以我不知道这在服务器端会是什么样子(你必须为此创建一个单独的问题),但基本上你会这样设置您的服务器将根据请求下载该 XML 文件并将其作为文本返回。然后,客户端将使用 Ajax 请求(如果您不知道那是什么,Google 会这样)获取此 XML 数据,并使用 JavaScript 对其进行操作。

    因此,假设您使用的是jQuery,您的域是www.example.com,并且您有一个名为getxml 的视图,它获取并返回 XML 数据,您在 JavaScript 中就会有这样的内容:

    $.get('http://www.example.com/getxml', function(xml) {
        // Manipulate the `xml` variable here
    }, 'xml');
    

    (有关文档,请参阅 jQuery.get()。)

    【讨论】:

    • 感谢您的回答。我对网络开发很陌生,你能指点我如何做到这一点吗?
    • @ben:当然可以。你在做任何服务器端开发吗?还是您只做开发的 JavaScript 部分?如果您在做服务器端,您使用的是什么语言?
    • 谢谢。我正在使用 Ruby on Rails。
    • @ben:查看我的编辑。您需要的所有功能都由我提到的 jQuery 库提供,尽管几乎任何 JavaScript 库都可以发出 Ajax 请求。
    【解决方案3】:

    在javascript中?也许像这样document.getElementById('iFrame2').contentWindow.document

    【讨论】:

      猜你喜欢
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      • 2013-10-28
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多