从 IFRAME IE11 调用父 JavaScript
Posted
技术标签:
【中文标题】从 IFRAME IE11 调用父 JavaScript【英文标题】:Invoking Parent JavaScript from IFRAME IE11 【发布时间】:2017-04-28 17:39:18 【问题描述】:我要做的就是在 iframe 父级上调用 javascript 函数。 这也在同一个域上。
如果我创建一个按钮来从框架中触发父级:
<script>
function onClick()
parent.hidePrintButton();
</script>
<button id="test" onclick="onClick();">Call Parent Window Function</button>
它在所有浏览器中都按预期工作。
但是,当我有一个执行 ajax 调用时:
parent.hidePrintButton();
在 IE 中不会调用父级,但在所有其他浏览器中都会调用。
然后我得到错误:
对象不支持属性或方法'hidePrintButton'
这看起来像当我与页面交互时,父级工作但在 iframe onload 中运行时却没有。
我已经尝试过 postmessage、事件侦听器、绑定、父级。而且这些似乎都无法在父页面上运行 JavaScript。
虽然这可能与按下按钮并且焦点位于 iframe 上的时间有关。
【问题讨论】:
【参考方案1】:尝试使用 window.parent 而不是父级:
https://developer.mozilla.org/en-US/docs/Web/API/Window/parent
https://msdn.microsoft.com/en-us/library/ms534326(v=vs.85).aspx
【讨论】:
这个我也试过了,没用。【参考方案2】:无法仅在 IE11 上解决问题。
解决此问题的唯一方法是创建一种方法来轮询 iframe,直到它返回您正在寻找的响应:
var keepPolling = true;
function pollFrame()
if ($("#refFrame")[0].contentWindow.processed)
setProcessed();
keepPolling = false;
if(keepPolling)
setTimeout(pollFrame, 750);
;
【讨论】:
以上是关于从 IFRAME IE11 调用父 JavaScript的主要内容,如果未能解决你的问题,请参考以下文章