【问题标题】:Can't access to parent javascript in browsers tablets (except Firefox) from iframe无法从 iframe 访问浏览器平板电脑(Firefox 除外)中的父 javascript
【发布时间】:2012-12-21 10:48:42
【问题描述】:

我在页面上有一个 iframe,我想从这个 iframe 访问父页面的功能。 在 PC 浏览器中使用这个效果很好:

parent.function()

问题出在平板浏览器中,当我尝试访问该函数时,它返回“未定义”并且找不到父级,就像不存在一样。但这个问题在安卓的火狐浏览器中不会出现,它是唯一在平板电脑上运行良好的浏览器。

PD:两个页面(父页面和 iframe)都在同一个域中。

谢谢!

【问题讨论】:

    标签: javascript android tablet


    【解决方案1】:

    如果浏览器是 html5 尝试使用 html5 通信方法:postMessage。 postMesseage 允许跨域通信。

    //parent code
    window.addEventListener("message",function(msg){
        msg.data;
        //... do something
    }, false);
    
    //iframe code
    parent.postMessage("hi daddy");
    

    使用 JSON.parse(...) 和 JSON.stringify(...) 您可以发送如下对象:

    {
        command: "methodName",
        arguments:[100, 200, "my string"]
    }
    

    父窗口应该解释 iframe 发送的命令。因此,您有一个允许 iframe 使用的小型 API 实现。

    https://developer.mozilla.org/en-US/docs/DOM/window.postMessage

    【讨论】:

    • 非常感谢!正是我需要的!
    猜你喜欢
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 2017-12-20
    相关资源
    最近更新 更多