【问题标题】:js cross-domain to iframejs跨域到iframe
【发布时间】:2015-12-02 00:04:55
【问题描述】:

我的页面中嵌入了来自不同域的 iframe。是否可以通过某种方式从父页面访问其 DOM?现在它说:


未捕获的 DOMException:无法从 'HTMLIFrameElement' 读取 'contentDocument' 属性:阻止具有源“http://localhost:63342”的框架访问跨域框架。


我希望添加指令

<?php header('Access-Control-Allow-Origin: *');  ?>

到 iframe 页面会有所帮助,但它没有。 这两个域现在都位于我的本地主机上,但在不同的服务器下运行。 那么有一些可行的解决方案吗? 请注意,我只需要访问一些 iframe 的元素,而不是 postMessages、websockets 等。

【问题讨论】:

    标签: javascript iframe same-origin-policy


    【解决方案1】:

    请注意,我只需要访问一些 iframe 的元素

    直接访问是不可能的

    这与 postMessages 无关

    postMessage可以达到同样的终极目标。

    您只需将访问 DOM 的代码移动到 iframe 内的页面,然后使用父窗口中的postMessage 要求该页面运行它。然后该页面可以将父窗口需要的任何数据序列化为字符串,并使用postMessage 将其发回。

    【讨论】:

    • 你看,我需要父页面对 iframe 中的事件立即做出反应。例如,如果用户单击 iframe 中的 close 按钮,它应该会向下(即折叠)。如果我理解正确,我可以将消息从它发布到父页面并在其上运行适当的程序,但这需要一些时间,具体取决于连接速度,对吧?
    • 一切都需要时间。 postMessage 不会占用大量时间(至少在 UI 更新发生的时间尺度上不会)。
    猜你喜欢
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 2012-03-12
    • 2011-01-12
    • 2017-05-09
    相关资源
    最近更新 更多