Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
允许子iframe访问父级中的特定javascript函数_Javascript_Html_Security_Iframe - Fatal编程技术网

允许子iframe访问父级中的特定javascript函数

允许子iframe访问父级中的特定javascript函数,javascript,html,security,iframe,Javascript,Html,Security,Iframe,我需要能够在我的应用程序中安全地运行未经验证的代码,并且需要向iframe显示一些函数。在iframe中编写的代码将需要来自我的站点的一些数据,我认为最好的方法可能是通过子级调用函数,然后触发父级发出ajax请求。这是可行的和/或最好的方法吗 您通常应该假设iframe不能直接与其父级对话;这就像一个选项卡可以控制另一个选项卡一样 处理两个相关iFrame之间的通信(尤其是跨域通信)的最佳方法是使用。这允许您配置事件来侦听正在传递的消息,并在消息到达时进行处理。它还提供了对允许哪些域发送消息的控

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

您通常应该假设iframe不能直接与其父级对话;这就像一个选项卡可以控制另一个选项卡一样

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

window.addEventListener('message', receiveMessage, false);

function receiveMessage(e) {
  console.log('received message', e.data);
}
使用这种方法,您可以传递数据,使用不同的消息触发不同的操作,等等


这就是YouTube API的工作原理,允许开发人员在iframe中加载视频播放器,并且仍然可以收听播放事件、暂停视频、切换视频源等。

谢谢,这让我了解了我需要的文档。你能推荐任何深入探讨这个概念的书籍/文章吗?这些MDN文章是你能得到的最深入的。消息传递并不是一个非常复杂的话题。我的意思是更多关于安全运行未经验证的代码、构建代码平台的话题。StackOverflow不是一个讨论论坛,它针对的是有具体答案的特定技术问题。你可以在别处找到这些信息。