2017-10-09 8 views
0

J'essaye de mettre en place un pont Java Javascript en utilisant JxBrowser. La méthode onScriptContextCreated n'est pas appelée et je ne sais pas pourquoi.JxBrowser onScriptContextCreated n'est pas invoqué

J'ai un navigateur intégré dans mon application Java et quand je clique sur le bouton, la fenêtre apparaît qui dit "howdy" mais "bonjour" n'est jamais imprimé sur la console java. J'ai jeté des lignes de débogage dans la méthode onScriptContextCreated et il n'est jamais touché.

Voici le code Java

webBrowser.addScriptContextListener(new ScriptContextAdapter() {  
      @Override 
      public void onScriptContextCreated(ScriptContextEvent event) { 
      Browser browser = event.getBrowser(); 

      JSValue window = browser.executeJavaScriptAndReturnValue("window"); 
      System.out.println("Setting property"); 
      window.asObject().setProperty("sendNSCommand", new JSFunctionCallback() { 

       @Override 
       public Object invoke(Object... os) { 
        String command = (String) os[0]; 
        System.out.println("Command from JavaScript: " + command); 
        return null; 
       } 
      }); 
     } 
    }); 

Et voici ma page web exemple

<html> 
<head> 
    <script> 
     function callMe() { 
      sendNSCommand2("howdy"); 
      sendNSCommand("hello"); 

     } 

     function sendNSCommand2(x) { 
      window.alert(x); 
     } 
    </script> 
</head> 
<body> 
<input type="button" value="test" onClick="callMe()" /> 
</body> 
</html> 

Répondre

0

On dirait cet exemple de code fonctionne correctement. Après l'avoir lancé dans mon environnement local, il imprime la ligne "Setting property" dans la console Java. Lorsque je clique sur le bouton "test", la boîte de dialogue "howdy" apparaît. Lorsque je clique sur le bouton "OK" de cette boîte de dialogue, la ligne "Commande de JavaScript: bonjour" est imprimée dans la console Java.