gpt4 book ai didi

webview - 无法粘贴到 JavaFX WebView 上的 ACE 编辑器中

转载 作者:行者123 更新时间:2023-12-02 10:05:47 29 4
gpt4 key购买 nike

我正在开发一个小型 JavaFX 应用程序。我想嵌入一个Lua编辑器。我通过 WebView 节点在应用程序中使用 ACE Editor。编辑器加载完美;但是,无论从何处复制文本,我都无法通过鼠标事件和键盘事件粘贴任何文本。这是一个已知的错误吗?

HTML 文件:

<!DOCTYPE html>
<html lang="en">
<head>
<title>Lua Editor</title>
<style type="text/css" media="screen">
#editor {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
</style>
</head>
<body>
<div id="editor"></div>
<script src="ace.js" type="text/javascript" charset="utf-8"></script>
<script>
var editor = ace.edit("editor");
editor.getSession().setMode("ace/mode/lua");
editor.setOptions({
fontSize: "11pt"
});
</script>
</body>
</html>

Java 代码片段:

@FXML
private WebView scriptEditor;

private void initializeCardScript() {
scriptEditor.getEngine().load("path to HTML file");
}

最佳答案

根据 José Pereda 的建议,我能够使用 ctrl+v 通过关键事件粘贴文本。但我无法使用鼠标单击“复制/剪切/粘贴”对话框进行粘贴。

通过创建从 Javascript 到 java 的通信桥梁,我能够完全解决我的问题。我在 ACE 编辑器的粘贴事件上调用 java 方法。

Java 代码片段:

private void initializeCardScript() {
scriptEditor.getEngine().load("path to HTML file");
((JSObject) scriptEditor.getEngine().executeScript("window")).setMember("java", new Object() {
public void paste() {
String content = (String) Clipboard.getSystemClipboard().getContent(DataFormat.PLAIN_TEXT);
if (content != null) {
scriptEditor.getEngine().executeScript("editor.onPaste(\"" + content.replace("\n", "\\n") + "\");");
}
}
});
}

ace.js:

var onPaste = function(e) {
java.paste();
// var data = handleClipboardData(e);
// if (typeof data == "string") {
// if (data)
// host.onPaste(data, e);
// if (useragent.isIE)
// setTimeout(resetSelection);
// event.preventDefault(e);
// }
// else {
// text.value = "";
// pasted = true;
// }
};

来源:

https://stackoverflow.com/a/25676561/3956070

https://blogs.oracle.com/javafx/entry/communicating_between_javascript_and_javafx

关于webview - 无法粘贴到 JavaFX WebView 上的 ACE 编辑器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32216069/

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