2015-03-04 3 views
1

Я пытаюсь отобразить диалоговое окно печати, в котором пользователь может распечатать счет-фактуру с помощью кнопки управления. Основная часть этого кода - javascript, но я заметил, что когда я нажал кнопку печати (на 4 разных компьютерах), блокировщик всплывающих окон в Google Chrome полностью заблокировал страницу печати. После того, как я разрешил всплывающие окна, он работал нормально, но неудобно для клиентов постоянно говорить, что разрешает всплывающие окна. Я искал еще один вариант, где предположительно window.createPopup вроде обходит блокировщик всплывающих окон браузера, но использует ограничения окна. Я также не думаю, что window.createPopup - это метод в asp.net. Как я могу запретить блокировщику всплывающих окон блокировать диалоговое окно страницы печати, когда любой клиент нашего сайта отправляется на печать страницы, так как я не могу контролировать их настройки браузера? Можно ли это сделать?Окно печати заблокировано блокировщиком всплывающих окон браузера

<script type="text/javascript"> 
    function PrintGridData() { 
     var prtGrid = document.getElementById('<%=panel22.ClientID %>'); 
     prtGrid.border = 0; 
     var prtwin = window.open('', 'Printpanel22Data', 'left=100,top=100,width=1000,height=1000,tollbar=0,scrollbars=1, status=0,resizable=1'); 
     prtwin.document.write(prtGrid.outerHTML); 
     prtwin.document.close(); 
     prtwin.focus(); 
     prtwin.print(); 
     prtwin.close();  
    } 
    </script> 

и код позади, чтобы вызвать функцию

Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click 
    ClientScript.RegisterStartupScript(Me.[GetType](), "PrintOperation", "PrintGridData()", True) 
End Sub 
+0

Вы браузер настроен блокировать всплывающие окна. Добавьте его в надежные сайты. Или не используйте всплывающее окно и используйте CSS Print Media, чтобы распечатать то, что вам нужно. – epascarello

+0

Я спрашиваю, есть ли способ обойти это из-за того, что каждый клиент, который что-то покупает с нашего сайта, будет иметь возможность распечатать свой счет. Поэтому я хочу попытаться избежать блокировщика всплывающих окон, так как я не могу управлять браузером клиентов. – user3841709

+0

. Вы можете определить, было ли всплывающее окно заблокировано, но вам лучше с помощью CSS Print Media. Простое добавление новой таблицы стилей и скрытие содержимого, которое вы не хотите печатать. – epascarello

ответ

1

Долгое время назад мне пришлось иметь дело с чем-то вроде этого. Я закончил отказ от всплывающего окна для печати и просто использовал стиль печати в моем файле CSS. Да, это намного больше работы, и вы собираетесь использовать много бумаги для тестирования, но мне приходилось обслуживать пользователей, которые ненавидели всплывающие окна.

Единственный способ выскочить окно, которое я знаю это цель = «_blank» в теге привязки ...

+0

, прежде чем я даже посмотрю на это, как работает стилизация печати с помощью CSS? Вы вызываете .css-файл нажатием кнопки? – user3841709

+0

Вы добавляете директиву @media print {} в нашу таблицу стилей (или настройте ее как отдельный файл стилей, если хотите), и примените свой стиль там. Вы можете просмотреть его в режиме предварительного просмотра без печати. Он применяется только во время операции печати, поэтому ваш стиль отображения не влияет. – Tim

+0

Итак, мне нужно как-то вызвать функцию печати для этой @media print {}, которая будет вызвана? Как я могу перейти на экран печати с моей кнопки, нажмите – user3841709