javaFX의 webView에서 선택한 텍스트를 가져와야합니다. 인터넷에서 어떻게하는지 전혀 알지 못했습니다.javaFX의 webView에서 getSelectedText를 얻는 방법
5
A
답변
5
이 자바 스크립트로 수행 할 수 있습니다 또한
String selection = (String) webView.getEngine()
.executeScript("window.getSelection().toString()");
System.out.println(selection);
찾을 수도 있습니다 도움이 : 솔루션을 결합
Communicating between JavaScript and JavaFX with WebEngine
executeScript
0
가 jewelsea에 의해 제공 : https://gist.github.com/jewelsea/7819195 및 Get Selected HTML in browser via Javascript 기준 :
선택한 텍스트와 HTML을 모두 추출 할 수 있습니다. JAVAFX 웹뷰의 ource 코드 :
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package SelectInWebview;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ToolBar;
import javafx.scene.layout.VBox;
import javafx.scene.web.HTMLEditor;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class SelectionHTMLExtractor extends Application {
public static final String HTML
= "<p><em>\"Do not judge me by my successes, judge me by how many times I fell down and got back up again.\"</em></p>"
+ "    - Nelson Rolihlahla Mandela";
public static final String SELECT_TEXT
= "(function getSelectionText() {\n"
+ " var text = \"\";\n"
+ " if (window.getSelection) {\n"
+ " text = window.getSelection().toString();\n"
+ " } else if (document.selection && document.selection.type != \"Control\") {\n"
+ " text = document.selection.createRange().text;\n"
+ " }\n"
// + " if (window.getSelection) {\n"
// + " if (window.getSelection().empty) { // Chrome\n"
// + " window.getSelection().empty();\n"
// + " } else if (window.getSelection().removeAllRanges) { // Firefox\n"
// + " window.getSelection().removeAllRanges();\n"
// + " }\n"
// + " } else if (document.selection) { // IE?\n"
// + " document.selection.empty();\n"
// + " }"
+ " return text;\n"
+ "})()";
public static final String SELECT_HTML
= "(getSelectionHTML = function() {\n"
+ " var userSelection;\n"
+ " if (window.getSelection) {\n"
+ " // W3C Ranges\n"
+ " userSelection = window.getSelection();\n"
+ " // Get the range:\n"
+ " if (userSelection.getRangeAt)\n"
+ " var range = userSelection.getRangeAt (0);\n"
+ " else {\n"
+ " var range = document.createRange();\n"
+ " range.setStart (userSelection.anchorNode, userSelection.anchorOffset);\n"
+ " range.setEnd (userSelection.focusNode, userSelection.focusOffset);\n"
+ " }\n"
+ " // And the HTML:\n"
+ " var clonedSelection = range.cloneContents();\n"
+ " var div = document.createElement ('div');\n"
+ " div.appendChild (clonedSelection);\n"
+ " return div.innerHTML;\n"
+ " } else if (document.selection) {\n"
+ " // Explorer selection, return the HTML\n"
+ " userSelection = document.selection.createRange();\n"
+ " return userSelection.htmlText;\n"
+ " } else {\n"
+ " return '';\n"
+ " }\n"
+ " })()";
@Override
public void start(Stage stage) throws Exception {
HTMLEditor wisdom = new HTMLEditor();
wisdom.setHtmlText(HTML);
Label selectedText = new Label();
Label selectedHTMLSource = new Label();
Button selectText = new Button("Get TEXT Selection");
selectText.setOnAction(event -> {
WebView webView = (WebView) wisdom.lookup("WebView");
if (webView != null) {
WebEngine engine = webView.getEngine();
Object selection = engine.executeScript(SELECT_TEXT);
if (selection instanceof String) {
selectedHTMLSource.setText((String) selection);
}
}
});
Button selectHTML = new Button("Get HTML Selection");
selectHTML.setOnAction(event -> {
WebView webView = (WebView) wisdom.lookup("WebView");
if (webView != null) {
WebEngine engine = webView.getEngine();
Object selection = engine.executeScript(SELECT_HTML);
if (selection instanceof String) {
selectedText.setText((String) selection);
}
}
});
VBox layout = new VBox(
10,
new ToolBar(selectHTML, selectText),
selectedText, selectedHTMLSource,
wisdom
);
layout.setAlignment(Pos.CENTER);
layout.setPadding(new Insets(10));
stage.setTitle("SelectionHTMLExtractor");
stage.setScene(new Scene(layout));
stage.show();
}
public static void main(String[] args) {
launch(SelectionHTMLExtractor.class);
}
}
관련 문제
- 1. webview에서 페이지 상태를 얻는 방법
- 2. WebView에서 터치 이벤트를 얻는 방법
- 3. 안드로이드 webview에서 html 페이지의 끝을 얻는 방법
- 4. JavaFX의 Line3D
- 5. JavaFX의 ErrorInfo
- 6. JavaFX의 글꼴 측정 지점
- 7. TableView JavaFX의 컨텍스트 메뉴 가시성
- 8. Webview에서 링크를 클릭하면 표시되는 진행 대화 상자를 얻는 방법
- 9. android에서 webview에서 선택한 부분의 시작 및 끝 위치를 얻는 방법
- 10. JavaFX의 다이나믹/인스턴트 리사이즈
- 11. TableView JavaFX의 가운데 CheckBox
- 12. JavaFX의 2D Cel-Shading
- 13. JavaFX의 팝업 클래스 사용
- 14. JavaFX의 다중 장면
- 15. observablelist javaFX의 업데이트 문제
- 16. Java 및 JavaFx의 미래
- 17. JavaFX의 응용 프로그램 아이콘
- 18. JavaFX의 Z- 순서
- 19. JavaFX의 딥 링크
- 20. JNLP와 JavaFX의 차이점
- 21. JavaFx의 Datagrid 또는 Table
- 22. WebView에서 CSS를 무시하는 방법
- 23. webview에서 결과 값을 얻는 방법은 무엇입니까?
- 24. 색상 JavaFX의 마우스 효과로 변경
- 25. JavaFX의 SplitPane에서 setResizeWeight()와 동일합니까?
- 26. JavaFX의 사용자 정의 Runnable 노드
- 27. webview에서 paramenter를 javascript에 전달하는 방법
- 28. WebView에서 웹의 이미지에 연결하는 방법
- 29. Android WebView에서 WebKitDeveloperExtras를 활성화하는 방법
- 30. Android : WebView에서 YouTube 채널을로드하는 방법?