2013-07-09 1 views
1

Я выполняю некоторый скрипт, чтобы добавить некоторый html на страницу и добавить некоторые классы ко всем элементам на странице. Затем я вызываю печать, выполнив следующий код:Как выполнить некоторый JavaScript, когда печать завершается или отменяется

window.print(); 

Теперь пользователь распечатает страницу или отменит ее. В этом действии мне нужно удалить этот html-код и удалить эти классы. Итак, на каком событии я могу выполнить код для удаления этого html-кода и удалить эти классы?

+0

Сомневаюсь, что вы можете получить эту информацию, используя стандартный JavaScript. Однако, возможно, вы можете обмануть, ожидая события «onfocus» в «документе». – Niko

+2

как насчет использования тега @media для печати определенного стиля? –

+0

@ SubirKumarSao Я использую тег @media для печати определенного стиля. Но я печатаю некоторые конкретные данные при использовании кликов на кнопке печати без всплывающих окон. И я хочу, чтобы, когда пользователь попытается распечатать эту страницу, он напечатает обычную страницу, а не данные. – Debiprasad

ответ

2

Вы можете обеспечить печать определенного стиля с помощью тега @media.

@media print { 
    body { font-size: 10pt } 
} 

Вы можете скрыть данные с помощью стиля, который вы не хотите печатать.

Подробнее here

+0

Как написано в комментарии ниже вашего комментария, я уже использую тег @media. – Debiprasad

+0

Проблема в том, что: я хочу скрыть эти данные и отобразить все остальные, когда пользователь пытается распечатать, используя диалог печати по умолчанию. – Debiprasad

2

Я просто была такая же проблема. Сначала мне пришлось добавить библиотеку печати. Я использовал JQuery.PrintPage. Затем я создал вторую веб-страницу, то есть точный контент для печати с помощью кнопки печати. Таким образом, если пользователь «распечатывает» страницу, они получают точную страницу, если они печатают с помощью моей кнопки «печать», они получают версию с отформатированным принтером.

Я считаю, что это все, что мне нужно было добавить. Я добавил его к моей странице сведений .onReady()

$("#print-link").button(
    {     
     icons: { primary: "ui-icon-print" } 
    } 
).printPage('@printlink'); 

Preview, что я здесь для нашей производственной площадки http://www.sc-pa.com/testsearch/parcel/details/0001020003

Лучшая часть этого подхода является оно не корректно. Если по какой-то причине javascript отключен. Вместо этого кнопка печати откроет новое окно, потому что это гиперссылка, разработанная JqueryUI, и пользователь может использовать собственную функцию печати браузера.

вот ссылка (которая непосредственно не подвергается воздействию пользователя для моей красивой страницы печати) http://www.sc-pa.com/testsearch/parcel/PrettyPrint/0001020003

+0

Кроме того, на самом деле это не часть ответа, но я сначала попробовал все, что вы описали, и попытался сделать все с одной страницей. –

+0

Благодарим вас за ответ и сообщите мне о плагине jQuery.PrintPage. Я проверил, как это работает, и изменил мой код, чтобы загрузить контент для печати iframe и распечатать его. – Debiprasad

-1

Я reeeeeally думаю, что вы приближаетесь это совершенно неправильно, и вы должны действительно пойти с медиа-запросов, как другие заявили, , Однако только для Шиц и хихикает вы можете использовать следующий действительно дерьмовый «решение»:

(function() { 
    document.querySelector('a').addEventListener('click', function(e) { 
     e.preventDefault(); 
     e.stopPropagation(); 

     window.print(); 

     var hideContent = function() { 
      if (document.hasFocus) { 
       var dataElem = document.getElementById('data'); 
       dataElem.parentNode.removeChild(dataElem); 

       clearInterval(interval); 
      } 
     }; 

     var interval = setInterval(hideContent, 50); 
    }); 
}()); 

Demo adjusted to your question including another ugly hack for when the class is assigned too slowly

В основном это проверяет, имеет ли окно фокус после диалога печати. Но опять же вы не должны этого делать.

Я понятия не имею о поддержке браузера, и он может (и, вероятно, должен) взорвать вас на ПК.

BTW Я уже упоминал, что запросы СМИ - это путь? Потому что они.

+1

Почему downvote? – PeeHaa

Смежные вопросы