Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > не успевает загрузиться pdf


Автор: Swatch 26.4.2010, 09:52
Недавно задавала вопрос, как при открытии нового окна с помощью window.open в это время направить родительское окно по определенному адресу. Вопрос был решен с помощью редиректа location.href.

Однако возникла другая проблема: у меня не успевает догрузиться pdf, а редирект уже происходит. В итоге все работает достаточно нестабильно: либо pdf не грузится вообще, либо данные по пути теряются и не сохраняются, либо редирект не происходит.:(

Можно как-то проверить, отработался ли window.open? Или что вообще можно в такой ситуации сделать? Может у кого есть дельные предложения? буду очень признательна!!! smile 

Автор: Amphiluke 26.4.2010, 10:17
Метод window.open возвращает ссылку на объект открываемого окна, в котором (как я понял) загружется ваш PDF. Вы не пытались осуществлять redirect не сразу после вызова метода window.open, а, скажем, в обработчике события onload открываемого окна?

В общем, не видя вашего кода, предполагаю, что это могло бы выглядеть примерно так... smile
Код

var wnd = window.open(...);
wnd.onload = function() {
   location.href = "http://........................."
}

Автор: Swatch 26.4.2010, 10:33
так это не работает:(

вот мой код:
Код

    function Update(obj)
      {
    if (obj["with_nds_sum"].value <= 0) {
        alert("Вы не ввели сумму счета!");
        return false;
    }else {
        obj["mode"].value = 'print';
        str = '$url_class?edit=1&mode=print&docid=$docid&mg_id_operator='+obj["mg_id_operator"].value+'&with_nds_sum='+obj["with_nds_sum_text"].value+'&tp=\"'+obj["tp"].value+'\"&finish=Finish'
        var str_1='_blank'
        var str_2='width=640,height=480,resizable=yes,scrollbars=yes,status=no,menubar=no,toolbar=no,location=no,directories=no';
        var wnd = window.open(str,str_1,str_2);
        wnd.onload = function() {
               window.parent.location.href = '/bin/printDocs?mode=schet';
        } 
        return false;
    }

      }


в html:

Код

<input type=button name=finish value="Finish" onClick="Update(this.form);">

Автор: Amphiluke 26.4.2010, 10:45
Цитата(Swatch @  26.4.2010,  14:33 Найти цитируемый пост)
так это не работает:(

В каком браузере работаете? Я вот сейчас посмотрел: действительно, IE не хочет «по-хорошему», а FF слушается. smile
Вот так удается подчинить своей воле и IE:
Код

var wnd = window.open(str,str_1,str_2);
if (wnd.addEventListener) {
    wnd.addEventListener("load", function() {parent.location.href = '/bin/printDocs?mode=schet';}, false);
} else {
    wnd.attachEvent("onload", function() {parent.location.href = '/bin/printDocs?mode=schet';});
}


Автор: Swatch 26.4.2010, 10:51
точно, Вы правы. в FF все работает... но вот в IE у меня так и не заработало:( непонятно даже...  smile 

Автор: Amphiluke 26.4.2010, 10:53
Цитата(Swatch @  26.4.2010,  14:51 Найти цитируемый пост)
но вот в IE у меня так и не заработало:( непонятно даже

Старая страничка в кэше не сохранилась?

Автор: Swatch 26.4.2010, 10:58
нет.. я уже переоткрывала IE... 

Автор: Amphiluke 26.4.2010, 11:13
Хм. Как я заметил, если в дочернем окне открывается не HTML-страница, а PDF-документ, IE выбрасывает сообщение об отклоненном разрешении. Видимо, нельзя назначить обработчик события для страницы, содержащей внедренный PDF-документ. С HTML таких проблем не наблюдаю.

У FF с помощью DOM Inspector можно видеть, что PDF встраивается в страницу при помощи дескриптора embed с type="application/pdf", поэтому никаких проблем с навешиванием обработчиков события окна. В IE пока хз. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)