浏览器: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在模态对话框窗口中替换当前文档?
答案 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。