Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从弹出窗口更改iframe的src_Javascript_Dom_Iframe - Fatal编程技术网

Javascript 从弹出窗口更改iframe的src

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

在我的web应用程序中,用户可以打开一个弹出窗口来选择一个编辑对象。当用户在弹出窗口上按OK时,它应该根据选择的对象更新父窗口中iframe的
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();