Поймать window.print () из браузера SWT - PullRequest
0 голосов
/ 22 октября 2008

Я изучаю браузерное решение / API, обладающее следующими функциями:

  • Должен поддерживать современные веб-технологии по умолчанию
  • Должен поддерживать XSLT на стороне клиента
  • Должен поддерживать выполнение произвольного Javascript на страницах, которые он загружает
  • Должен быть в состоянии отлавливать события с веб-страницы, нацеленной на браузер или ОС (меня особенно интересует window.print ())

QtWebkit показался мне подходящим вариантом, но он все еще не поддерживает XSLT, поэтому мне пришлось искать альтернативы. Браузер SWT - это оболочка для нативного компонента браузера базовой системы, и в Linux, который мне интересен, это будет означать движок firefox, который поддерживает интересующие меня атрибуты, за исключением того, что я до сих пор не узнал, как перехватить окно .print () и предоставьте мою собственную реализацию вместо стандартной, которая открывает диалог печати. ​​

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 24 октября 2008

Если вы знаете, как перехватить событие в javascript и предотвратить отображение собственного диалога, вы можете использовать метод, показанный в этом фрагменте , чтобы перехватить событие в вашем SWT-коде.

Другой вариант может быть лучше: используйте классы mozilla, чтобы зарегистрировать свой собственный обработчик печати. Нечто подобное показано в этом фрагменте для обработчика загрузки, но я не проверял, возможно ли это и для обработчика печати. ​​

Уловка для этого второго варианта указана в javadoc фрагмента:

ВАЖНО: для правильной работы этого фрагмента должны быть выполнены все требования по использованию JavaXPCOM в автономном приложении (см. http://www.eclipse.org/swt/faq.php#howusejavaxpcom).

0 голосов
/ 27 апреля 2010

FWIW есть другой подход для этого с браузерами SWT на базе Mozilla: http://www.eclipse.org/forums/index.php?t=msg&th=166869&start=0&.

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