Nid*_*eph 3 jquery json copy-paste
要求是在javafx应用程序中嵌入JSON编辑器.我尝试在webview的帮助下将json编辑器(由Ace驱动)https://github.com/josdejong/jsoneditor嵌入到我的javafx应用程序中.一切正常,除了复制(CTRL + C)和粘贴(CTRL + V).
经过研究,我发现javafx webkit是野生动物园.但是我在像firefox,chrome和所有的网页浏览器中尝试过相同的编辑器.即使在最新版本的safari中它运行良好,但我没能在javafx webview中使用它.目前我正在使用最新的JDK(8),所以也有最新的javafx.有什么方法可以让我在javafx webview中使用复制粘贴快捷键来处理嵌入式编辑器吗?请帮忙.
ace.js使用剪贴板,并且在任何常规浏览器中都可以正常工作,但在JavaFX webView中,存在问题.如果你handleClipboardData在ace.js中寻找函数你可以看到:
setData失败时.getData失败.寻找一种解决方法我发现这个答案与codemirror相关,也可以应用于ace.js.
基本上,您必须在JavaFX应用程序(在ace编辑器之外)中建立桥接来处理复制和粘贴事件.像这样的东西:
@Override
public void start(Stage primaryStage) {
webView=new WebView();
webEngine = webView.getEngine();
webEngine.load(Utils.class.getResource("editor.html").toExternalForm());
// Capture Ctrl+V event and process it
webView.addEventHandler(KeyEvent.KEY_PRESSED, keyEvent -> {
if (keyEvent.isControlDown() && keyEvent.getCode() == KeyCode.V){
// PASTE
final Clipboard clipboard = Clipboard.getSystemClipboard();
String content = (String) clipboard.getContent(DataFormat.PLAIN_TEXT);
webEngine.executeScript(" pasteContent(\""+content+"\") ");
}
});
// retrieve copy event via javascript:alert
webEngine.setOnAlert((WebEvent<String> we) -> {
if(we.getData()!=null && we.getData().startsWith("copy: ")){
// COPY
final Clipboard clipboard = Clipboard.getSystemClipboard();
final ClipboardContent content = new ClipboardContent();
content.putString(we.getData().substring(6));
clipboard.setContent(content);
}
});
}
Run Code Online (Sandbox Code Playgroud)
现在在editor.html中,您必须创建pasteContent将在webEngine上粘贴事件时调用的函数:
<script>
var editor = ace.edit("editor");
...
function pasteContent(content){
editor.onPaste(content);
}
</script>
Run Code Online (Sandbox Code Playgroud)
最后在ace.js中,在函数中getCopyText,靠近第13071行,您必须插入警报,以便编辑器中复制的文本可以发送到webEngine."copy: "为简单起见,请注意硬编码字符串的使用.
this.getCopyText = function() {
var text = this.getSelectedText();
javascript:alert("copy: "+text);
this._signal("copy", text);
return text;
};
Run Code Online (Sandbox Code Playgroud)
这将是全部.
| 归档时间: |
|
| 查看次数: |
749 次 |
| 最近记录: |