Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Закрыть всплывающее окно после печати (https://javascript.ru/forum/events/48867-zakryt-vsplyvayushhee-okno-posle-pechati.html)

rfl 20.07.2014 03:10

Закрыть всплывающее окно после печати
 
Здравствуйте.

Подскажите, плз, как закрыть всплывающее окно после печати.

window.onload = function() 
        {
        var width = screen.width;
        var height = screen.height;
        var params = \'width=500,height=220,left=\' + (width / 2 - 250) + \',top=\' + (height / 2 - 110);
        var newwin = window.open(\'URL\', \'print\', params);
            
        newwin.focus();
        
        newwin.print();
        //newwin.close();

        return true;        
        }

Все одинарные кавычки экранированы, так как HTML основной страницы генерируется в php.

Если раскомментировать newwin.close(), то окно закрывается сразу после того, как открылось и нажать кнопку печать в диалоге печати нет никакой возможности.

Домен родительского окна и всплывающего - идентичен, имею возможность отредактировать код страницы, открывающейся во всплывающем окне

rfl 21.07.2014 01:29

Пока ждал ответа разобрался сам. Правда, получилось не совсем так, как хотелось бы, но главное, что работает. Из кода, который создает всплывающее окно убрал newwin.print(); а в код страницы, которая загружается в window.open() добавил:
var winPrint = setTimeout('print()', 50);
var winClose = setTimeout('window.close()', 300);

Почему это не работало из скрипта, создающее новое окно, я так и не разобрался.

Зато теперь появился другой вопрос - если открывать всплывающее окно нажатием на ссылку, тогда если ссылка расположена внизу страницы (чтобы до неё добраться нужно прокрутить страницу вниз) после открытия нового окна в родительском окне вся страница подымается в самый верх (перебрасывает на начало/верх страницы):
<a href="#" onclick="window_create('URL')">TEXT</a>


Используя:
<a href="javascript:window_create('URL')">TEXT</a>

все ок, кроме того, что если попытаться открыть ссылку в новом окне появляется пустое новое окно...

Посоветуйте, как правильно решить задачу?

hfts_rider 22.07.2014 11:05

Что бы не перекидывало в самый верх нужно заблочить стандартные действия события.
event.preventDefault(); или в конце напиши return false;


Часовой пояс GMT +3, время: 02:42.