从弹出窗口更改iframe的src

时间:2011-08-30 02:40:31

标签: javascript dom iframe

在我的Web应用程序中,用户可以打开一个弹出窗口来选择编辑对象。当用户在弹出窗口上按OK时,它应该根据选择的对象更新父窗口中的iframe的src(当然还会重新加载iframe)。

我的功能(在父窗口中)是:

function dismissEditPopup(win, newId) {
    newId = html_unescape(newId);
    var elem_iframe = document.getElementById("iframe_id");

    // (*) this line doesn't work
    elem_iframe.src = '/view_object/' + newId;

    elem_iframe.contentWindow.location.reload();

    win.close();
}

从弹出窗口调用此函数,该窗口包含一个脚本:

<script type="text/javascript">
    opener.dismissEditPopup(window, "hash_of_new_object");
</script>

问题是行(*)无声地失败。在Firefox 3.6和Google Chromium中的检查器中,我看到iframe src属性正在更新,但elem_iframe.contentWindow.location.href未更改。 (如果我添加一行elem_iframe.contentWindow.location.href = elem_iframe.src;,则忽略该分配。)。 Javascript错误控制台中没有错误。奇怪的是,如果我从Javascript控制台分配给elem_iframe.src 会按预期工作。

我可以使用<input>以相同的方式更改隐藏的document.getElementById("hidden_id").value = newId;字段的值。

所有内容都来自同一个网站。

(与Changing iframe src with Javascript类似,但该问题的答案不起作用,大概是因为代码是从弹出窗口调用的。)

1 个答案:

答案 0 :(得分:1)

拿出这条线:

elem_iframe.contentWindow.location.reload();

它正在重新加载iframe并且未加载新的src。