首页 > 解决方案 > GWT:将处理程序添加到本机 js 事件 onafterprint

问题描述

我有一个代表文档打印预览的 GWT 小部件。在此小部件中,打印按钮/操作由外部 Chrome 服务管理。我需要从我的 java 代码中检测本机 window.onafterprint 事件。

我怎样才能做到这一点?

提供代码没有成功:

var popup = $wnd.open(url, title, ""); // this open the preview window

popup.onafterprint = function (ev) {
   $wnd.console.log("mess 2"); // to try to see if detect the print button
}

标签: javascriptjavagwtevent-handling

解决方案


实现此目的的一种方法是将 Java 处理程序导出到 Javascript,这样 Javascript 事件可以调用 Java 处理程序:

public MyUtilityClass {
    public static int handleOnAfterPrint(String message) { ... }
    public static native void exportStaticMethod() /*-{
       $wnd.handleOnAfterPrint =
          $entry(@mypackage.MyUtilityClass::handleOnAfterPrint(Ljava/lang/String;));
    }-*/;
}

所以你可以这样做:

popup.onafterprint = function (ev) {
  handleOnAfterPrint("mess 2"); 
}

推荐阅读