gpt4 book ai didi

java - 从 JavaFX 程序为 WebView 执行 Javascript 函数

转载 作者:数据小太阳 更新时间:2023-10-29 06:12:31 35 4
gpt4 key购买 nike

我正在尝试从 Java 程序执行 Javascript 函数。 Javascript 函数获取 HTML 文件的内容并突出显示特定单词的出现。

是否可以从 webview 对象调用 Javascript 函数?

最佳答案

要在 WebView 中运行 javascript,您可以使用 WebEngine.executeScript() 方法。

并且有很多方法可以通过 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();

关于java - 从 JavaFX 程序为 WebView 执行 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14029964/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com