Javascript 从弹出窗口更改iframe的src
在我的web应用程序中,用户可以打开一个弹出窗口来选择一个编辑对象。当用户在弹出窗口上按OK时,它应该根据选择的对象更新父窗口中iframe的Javascript 从弹出窗口更改iframe的src,javascript,dom,iframe,Javascript,Dom,Iframe,在我的web应用程序中,用户可以打开一个弹出窗口来选择一个编辑对象。当用户在弹出窗口上按OK时,它应该根据选择的对象更新父窗口中iframe的src(当然,还要重新加载iframe) 我的功能(在父窗口中)是: 此函数从包含脚本的弹出窗口调用: <script type="text/javascript"> opener.dismissEditPopup(window, "hash_of_new_object"); </script> opener.dismi
src
(当然,还要重新加载iframe)
我的功能(在父窗口中)是:
此函数从包含脚本的弹出窗口调用:
<script type="text/javascript">
opener.dismissEditPopup(window, "hash_of_new_object");
</script>
opener.dismissEditPopup(窗口,“新对象的散列”);
问题是,(*)
行以静默方式失败。在Firefox 3.6和Google Chromium的检查器中,我看到iframe的src
属性正在更新,但是elem_iframe.contentWindow.location.href
没有改变。(如果我添加一行elem\u iframe.contentWindow.location.href=elem\u iframe.src;
,则该赋值将被忽略。)。Javascript错误控制台中没有错误。奇怪的是,如果我从Javascript控制台分配给elem\u iframe.src
,它确实会按预期工作
我可以使用document.getElementById(“hidden_id”).value=newId,以相同的方式更改隐藏
字段的值代码>
所有服务都来自同一个网站
(与类似,但该问题的答案不起作用,可能是因为代码是从弹出窗口调用的。)去掉这一行:
elem_iframe.contentWindow.location.reload();
它正在重新加载iframe,而新的src没有加载。这似乎可以解决问题,但您知道它为什么工作吗?.reload()
是否应该恢复iframe的原始(即从HTML源代码)属性?@Mechanical snail这可能是某种竞争条件,其中src
正在更改,但是reload()
在导航生效之前发生-因此它保持在同一页面上。
elem_iframe.contentWindow.location.reload();