2012-12-25 15 views

答えて

6

に示すように、ScriptEngineのを初期化し、その後、中にスクリプトをロードし、それを評価します。

JavaScriptを使用してテキストを強調する方法はたくさんあります。例えば。すべて一緒にHighlight word in HTML text (but not markup)

WebView webView = new WebView(); 
    final WebEngine engine = webView.getEngine(); 
    engine.load("https://stackoverflow.com/questions/14029964/execute-a-javascript-function-for-a-webview-from-a-javafx-program"); 

    engine.getLoadWorker().stateProperty().addListener(
      new ChangeListener<State>() { 
       @Override 
       public void changed(ObservableValue ov, State oldState, State newState) { 
        if (newState == State.SUCCEEDED) { 
         engine.executeScript(
           "function highlightWord(root,word){" 
           + " textNodesUnder(root).forEach(highlightWords);" 
           + "" 
           + " function textNodesUnder(root){" 
           + " var n,a=[],w=document.createTreeWalker(root,NodeFilter.SHOW_TEXT,null,false);" 
           + " while(n=w.nextNode()) a.push(n);" 
           + " return a;" 
           + " }" 
           + "" 
           + " function highlightWords(n){" 
           + " for (var i; (i=n.nodeValue.indexOf(word,i)) > -1; n=after){" 
           + "  var after = n.splitText(i+word.length);" 
           + "  var highlighted = n.splitText(i);" 
           + "  var span = document.createElement('span');" 
           + "  span.style.backgroundColor='#f00';" 
           + "  span.appendChild(highlighted);" 
           + "  after.parentNode.insertBefore(span,after);" 
           + " }" 
           + " }" 
           + "}" 
           + "\n" 
           + "highlightWord(document.body,'function');"); 
        } 
       } 
      }); 


    Scene scene = new Scene(webView, 500, 500); 

    primaryStage.setTitle("Hello World!"); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 
2

はあなたがここにあなたがJavaScriptを実行したScriptEngineを使用することができます

Scripting Guide.

-1

を確認しました。あなたがWebEngine.executeScript()メソッドを使用することができますWebViewでJavaScriptを実行するには、下記のコード

ScriptEngineManager manager = new ScriptEngineManager(); 
ScriptEngine engine = manager.getEngineByName("JavaScript"); 

// JavaScript code in a String 
String script = "function hello(arg) { print(arg); }"; 

// evaluate script 
engine.eval(script); 
+2

'ScriptEngine'は、スクリプトを実行することができますが、' WebEngine'ドキュメントモデルのコンテキストでスクリプトを実行していません。 – jewelsea

関連する問題