IE 6/7 Доступ запрещен при попытке доступа к всплывающему окну - PullRequest
3 голосов
/ 09 апреля 2009

Я создаю всплывающее окно без источника URL с помощью window.open (). Я не даю ему URL, потому что скоро я хочу опубликовать на нем форму. Тем не менее, в то же время я хотел бы отобразить короткое сообщение «Сейчас загружается ...», чтобы пользователь не смотрел пустую страницу в течение 2-3 секунд, а пройдет сообщение формы.

Я попытался добавить Javascript, который просто пишет в документ всплывающего окна. Это отлично работало в Firefox и IE 8, но не с сообщением «Отказано в доступе» в IE 6 и 7. Кто-нибудь знает, как обойти это? Мне бы хотелось иметь возможность: а) жестко закодировать некоторый HTML в window.open (), б) узнать, как обновить DOM всплывающего окна в этой ситуации, или в) услышать обо всем, о чем может подумать каждый.

Ниже приведен код, который я использую для вызова окна:

    var wref = window.open("", winName, "toolbar=1,resizable=1,menubar=1,location=1,status=1,scrollbars=1,width=800,height=600");
    if (wref != null) {
        try {wref.opener = self;} catch (exc) {}

        // while we wait for the handoff form post to go through, display a simple wait message
        $j(wref.document.body).html('Now loading …'); // EPIC FAIL
        wref.focus();

Ответы [ 4 ]

8 голосов
/ 09 апреля 2009

IE считает "about: blank" небезопасным URL-адресом и не позволит вам с ним поговорить. Я хотел бы создать статический HTML-файл «Сейчас загружается ...» и открыть его.

6 голосов
/ 09 апреля 2009
<a href="#" onclick="return test();">Test</a>
<script type="text/javascript">
function test() {
    window.open('javascript:opener.write(window);', '_name', 'width=200,height=200');
}
function write(w) {
    w.document.write("Hello, World.");
}
</script>

Работает в IE 6, 7 и 8, Opera 9.6, Firefox 2 & 3. Не работает в Safari для Windows 3 & 4 или Google Chrome.

Когда это работает, это приводит к довольно уродливому URL в поле Location.

Если указанная выше поддержка браузера является приемлемой, вы можете использовать предоставленное решение, в противном случае я бы сделал то, что сказал Дэвид, и window.open('Loading.htm' ...), где Loading.htm содержит любой контент, который вы хотите отобразить (в противном случае вы, вероятно, должны сохранять его легким загрузка и рендеринг могут занять больше времени, чем форма POST).

1 голос
/ 09 апреля 2009

Также обратите внимание, что winName, который вы указали в IE, НЕ ДОЛЖЕН иметь пробелов ... если это так, то это не удастся.

0 голосов
/ 17 сентября 2009

Другой обходной путь - открыть пустой файл "blank.htm" на своем сайте, а затем выполнить document.open () для доступа к нему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...