【问题标题】:Allowing child iframe to access specific javascript functions in the parent允许子 iframe 访问父 iframe 中的特定 javascript 函数
【发布时间】:2017-04-16 06:54:13
【问题描述】:

我需要能够在我的应用中安全地运行未经验证的代码,并且需要向 iframe 显示一些功能。在 iframe 中编写的代码将需要来自我的站点的一些数据,我认为最好的方法可能是通过子调用一个函数,然后触发父发出 ajax 请求。这是可行的和/或最好的方法吗?

【问题讨论】:

    标签: javascript html security iframe


    【解决方案1】:

    您通常应该假设 iframe 不能直接与其父级对话;这就像一个标签能够控制另一个标签。

    处理两个相关 iframe 之间(尤其是跨域)之间通信的最佳方式是使用 postMessage()。这允许您配置事件以侦听正在传递的消息并在它们到达时处理它们。它还提供对允许哪些域发送消息的控制。

    window.addEventListener('message', receiveMessage, false);
    
    function receiveMessage(e) {
      console.log('received message', e.data);
    }
    

    使用这种方法,您可以传递数据、使用不同的消息触发不同的操作等。

    这就是 YouTube API 的工作方式,允许开发者在 iframe 中加载视频播放器,同时仍会监听播放事件、暂停视频、切换视频源等。

    【讨论】:

    • 谢谢,这让我找到了我需要的文档。你能推荐任何深入探讨这个概念的书籍/文章吗?
    • 那些 MDN 文章的深度和深度差不多。消息传递不是一个很复杂的话题。
    • 我的意思是更多关于安全运行未经验证的代码、构建代码平台的主题。
    • StackOverflow 不是一个讨论论坛,而是针对具有具体答案的特定技术问题。您可以在其他地方找到该信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    相关资源
    最近更新 更多