从SWT浏览器中捕获window.print()

时间:2008-10-22 18:10:11

标签: java api browser swt

我正在探索具有以下功能的浏览器解决方案/ API:

  • 必须支持当今的默认网络技术
  • 必须支持客户端XSLT
  • 必须支持在其加载的网页上执行任意Javascript
  • 必须能够从针对浏览器或操作系统的网页中捕获事件(我对window.print()特别感兴趣)

QtWebkit似乎是要走的路,但它仍然不支持XSLT,所以我不得不寻找替代方案。 SWT浏览器是底层系统的本机浏览器组件的包装器,在linux中我感兴趣这将意味着firefox引擎支持我感兴趣的属性,除了我还没有找到如何捕获窗口.print()并提供我自己的实现,而不是打开打印对话框的默认实现。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

如果您知道如何在javascript中捕获事件以防止显示本机对话框,则可以使用此snippet中显示的方法来捕获SWT代码中的事件。

另一种选择可能更好:使用mozilla的类来注册自己的打印处理程序。对于下载处理程序,此snippet中显示了类似的内容,但我还没有测试打印处理程序是否也可以。

第二个选项的问题在代码片段的javadoc中说明:

  

重要提示:要使此代码段正常工作,必须满足在独立应用程序中使用JavaXPCOM的所有要求(请参阅http://www.eclipse.org/swt/faq.php#howusejavaxpcom)。

答案 1 :(得分:0)

FWIW还有另一种方法可以在http://www.eclipse.org/forums/index.php?t=msg&th=166869&start=0&使用基于Mozilla的SWT浏览器进行此操作。