Javascript 为什么iframe内部的iframe可以';不做window.top.addEventListener?

Javascript 为什么iframe内部的iframe可以';不做window.top.addEventListener?,javascript,html,iframe,cross-domain,Javascript,Html,Iframe,Cross Domain,我有一个iframe应用程序,它像这样注册事件侦听器(此iframe插入到另一个域中): 但是,如果我添加第二个iframe,则不会发送我的消息: <iframe src="example.com/main"> <iframe src="example.com/test" onload="window.top.addEventListener('message', (event) => { co

我有一个iframe应用程序,它像这样注册事件侦听器(此iframe插入到另一个域中):


但是,如果我添加第二个iframe,则不会发送我的消息:

<iframe src="example.com/main">
    <iframe src="example.com/test" onload="window.top.addEventListener('message', (event) => {
        const data = {
            url: window.location.origin
        };
        event.source.postMessage(JSON.stringify(data), event.origin);
    });
    "/> 
</iframe>

在第二种情况下,我得到

VM2818:2未捕获的DomeException:阻止具有原点“example.com”的帧访问跨原点帧。

我需要此功能来检测iframe的托管位置(在哪个网站上)

是什么导致了这个错误?我该怎么修


谢谢

你不能,在第一个例子中看到@Teemu为什么对我有效?第一个示例中的onload回调是在另一个域的上下文中执行的,而不是我的example.com?在第二个示例中,onload回调是在example.com上下文中执行的,因为它被放置在另一个iframe中?
<iframe src="example.com/main">
    <iframe src="example.com/test" onload="window.top.addEventListener('message', (event) => {
        const data = {
            url: window.location.origin
        };
        event.source.postMessage(JSON.stringify(data), event.origin);
    });
    "/> 
</iframe>