在IE模式对话框中替换文档

时间:2009-06-10 09:01:57

标签: html

浏览器:IE6 / IE7。

我想通过表单目标或javascript函数将新文档加载到我的html模式对话框中。

<html> <!-- quirks mode -->
<head>
<script>
function openModal(url) {
    if(window.showModalDialog)  showModalDialog(url);
    else {
        try {
            netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
            open(url, "", "modal=yes");
        } catch (e) {
            alert("dialog windows unsupported by browser");
        }
    }
}
</script>
</head>
<body style="background:red" onload="setTimeout(function(){document.body.style.backgroundColor='white'},100)">
<a href="javascript:openModal(location.href)">Open Modal</a>
<form>
<input type="submit" value="Send Form" />
</form>
<a href="javascript:location.reload()">Reload content</a>
</body>
</html>

在基于Gecko的浏览器中,它可以正常工作。

在IE中,当在模态对话框窗口中时,表单会打开一个新窗口(即使我指定了target="_self"属性),并且javascript reload()也会无声地失败。如果我尝试location.replace(location.href)location.href=_someurl_,则会打开一个新窗口。

所以我的问题是:如何让IE在模态对话框窗口中替换当前文档?

4 个答案:

答案 0 :(得分:3)

window.name = "SomeWindowName";
window.open("www.microsoft.com", "SomeWindowName");

...作品。这必须在对话框窗口中使用,而不是location.replace

答案 1 :(得分:1)

处理问题<form>部分的解决方案:添加

<base target="_self" />

在页面的<head>部分。

但它无法解决javascript问题。

答案 2 :(得分:0)

window.name="SomeWindowName";
window.open("www.microsoft.com","SomeWindowName");

答案 3 :(得分:0)

我遇到了与Internet Explorer 8相同的问题,所以在玩了一段时间之后似乎有一些解决方案,例如

location.reload();return false;

window.location = window.location;

window.location.reload(true);

但是,它们都不适用于我 - 要么没有任何反应,要么最好的情况下,会打开一个新窗口。

我想到的是某种解决方法是使用

document.forms[0].submit();

它可能不适用于所有星座,因为您需要在页面上显示一个表单(并确保表单提交不会执行任何不必要的更改),但它对我有用。还要确保你不要忘记把

<base target="_self" />

到Alsciende描述的页面标题中。

HTH

-G。