다음과 같은 자바 스크립트가 webengine에서 실행되었습니다. 출처 : Execute a Javascript function for a WebView from a JavaFX programJavaFX의 자바 스크립트에서 액세스 반환 값
이 자바 스크립트는 웹 사이트의 특정 단어를 강조 표시합니다.
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');");
}
}
});
나는 웹 사이트가 특정 단어를 포함하고 나는 그것이 잘 작동하고 단어를 강조하기 때문에이 코드는 좋은 출발점이 될 것입니다 생각인지 확인하고 싶습니다. 지금 필요한 것은 자바 스크립트가 강조 표시 될 때 계산해야한다는 것입니다. 그런 다음 단어가 포함되어 있으면 (counter> = 1) JavaFX에서 액세스 할 수있는 부울 반환 값을 가져 오려고합니다.
나는 몇 가지 시도했지만 실제로 스크립트 외부에서 액세스 할 수있는 카운터와 반환 값을 추가하기 위해 스크립트를 중립화하는 방법을 모른다.
모두 읽어 주셔서 감사합니다.