0

如何使用 JSNI 从外部 JS 调用?

例如:

//Some external JS code 
         ...
        this.onFeatureClick = function(event) {
        ...
        var name = "Batman";
        passToJava(name); //Invoke java method and pass String name
        };

我在这里试过这个:

 public void onModuleLoad() {
     ...
     nativeVariableName(); //Call native method
 }

 public static void passToJava(String name) {
    System.out.println(name);
 }

public native String nativeVariableName() /*-{
            $wnd.passToJava = function(name) {
            @com.google.myproject.webinterface.client.MyWebInterface::passToJava(Ljava/lang/String;)(name);
            }; }-*/;

我什至不知道来自 JavaScript 的调用是否有效。谢谢。

4

1 回答 1

2

这段代码工作得很好。我不知道您希望在哪里看到调用 System.out.println 的结果,但看起来您正在寻找错误的地方。将 System.out.println 替换为 Window.alert 并亲自查看。如果它不起作用,则意味着错误在其他地方:

  • 检查函数是否正确公开(在浏览器中打开控制台,输入window.passToJava,如果显示为null,则函数未公开)
  • 检查是否正确调用了 onFeatureClick。
于 2012-01-08T23:55:56.590 回答