(跨域)禁止从iframe外部调用父函数

(cross-domain) Call parent function from outside iframe is forbidden

本文关键字:外部调用 函数 iframe 跨域 禁止      更新时间:2023-09-26

。。。但我确实控制了第二个域(它集成了iframe)中的部分javascript。所以,我需要的是解决我的问题。我们有example2.com(这个包含iframe)和example.com(这个是iframe中的原始)。在iframe中,用户单击一个执行parent.redirectUser()的按钮,尽管我在example2.com中定义了该函数,但它无法执行,因为它指出该函数被禁止从iframe内访问。考虑到我可以控制example2.com中的javascript,有其他方法可以解决这种情况吗?非常感谢你的帮助。。。

是的,你可以做到。您可以使用消息技术,从孩子发送消息(example2.com):

parent.postMessage("Ok", "example.com");

在parent(example.com)中,您必须添加以下代码:

    //add eventlistener for message event
    if (window.addEventListener) {
        window.addEventListener("message", listener);
    } else {
        // IE8
        window.attachEvent("onmessage", listener);
    }
    function listener(event) {
//check the message trust or not?
        if (event.data == "Ok") {
//from parent you can call function, but function must be placed in global scope
            redirectUser();
        }
    }