我在页面上有一个 iframe,我想从此 iframe 访问父页面的功能。在 PC 浏览器中使用这个可以很好地工作:
parent.function()
问题出在平板电脑浏览器中,当我尝试访问该函数时,它返回“未定义”并且找不到父级,就像不存在一样。但是这个问题在安卓的 Firefox 浏览器中不会发生,它是唯一在平板电脑上运行良好的浏览器。
PD:两个页面(父页面和 iframe)都在同一个域中。
谢谢!
我在页面上有一个 iframe,我想从此 iframe 访问父页面的功能。在 PC 浏览器中使用这个可以很好地工作:
parent.function()
问题出在平板电脑浏览器中,当我尝试访问该函数时,它返回“未定义”并且找不到父级,就像不存在一样。但是这个问题在安卓的 Firefox 浏览器中不会发生,它是唯一在平板电脑上运行良好的浏览器。
PD:两个页面(父页面和 iframe)都在同一个域中。
谢谢!
如果浏览器是 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