заменить документ в модальном диалоговом окне IE - PullRequest
1 голос
/ 10 июня 2009

Браузер: IE6 / IE7.

Я хочу загрузить новый документ в мое модальное диалоговое окно html с помощью цели формы или функции javascript.

<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 ]

3 голосов
/ 18 марта 2011
window.name = "SomeWindowName";
window.open("www.microsoft.com", "SomeWindowName");

... работает. это необходимо использовать в диалоговом окне вместо location.replace

1 голос
/ 10 июня 2009

Решение, которое обрабатывает <form> часть проблемы: добавьте

<base target="_self" />

в разделе <head> страницы.

Однако это не решает проблему с JavaScript.

0 голосов
/ 21 декабря 2010

Я просто столкнулся с той же проблемой с Internet Explorer 8, поэтому, поиграв с ним некоторое время, кажется, что есть некоторые решения, такие как

location.reload();return false;

или

window.location = window.location;

или

window.location.reload(true);

Однако ни один из них не работает для меня - либо ничего не происходит, либо, в лучшем случае, открывается новое окно.

Что я нашел в качестве обходного пути, так это использование

document.forms[0].submit();

Это может не работать для всех созвездий, так как вам нужна форма на вашей странице (и убедитесь, что отправка формы не вносит никаких нежелательных изменений), но это сработало для меня. Также убедитесь, что вы не забыли поставить

<base target="_self" />

в заголовок вашей страницы, как описано Alsciende.

НТН

G.

0 голосов
/ 18 февраля 2010
window.name="SomeWindowName";
window.open("www.microsoft.com","SomeWindowName");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...