【发布时间】:2017-06-27 10:17:06
【问题描述】:
我正在 Electron (v1.6.2) 中开发一个(桌面)应用程序,它有一个 <webview> 元素(托管“访客”网页)和许多文本字段,包括 <textarea> 和 <input type="text">。
我们希望用户能够在 WebView 内的访客页面中选择文本并将其拖放到应用程序的字段中 - 但是,这不起作用。
无需做任何特别的事情,我可以在访客页面中选择文本并将其拖放到 Electron 之外的其他应用程序中。
例如。 -
将其放入文本编辑器、网络浏览器中的文本字段或我的终端窗口都可以正常工作。
它甚至可以将其放入我的 Electron 应用程序的不同实例中的字段中。
我还可以拖动应用程序中的文本,而不是 WebView 中的文本,然后将其拖放到 Ok 字段中。
但是,当拖动 WebView 中选择的文本时,应用程序中的字段对事件不敏感——即它们不会收到 dragover 或 drop 事件,并且焦点不会像您期望的那样切换到它们.
我尝试将事件处理程序添加到<webview> 以拦截鼠标事件(mosedown、mousemove、mouseup)以便手动控制并尝试使用event.preventDefault = true 禁用事件从传递到访客页面。
当识别出您正在拖动文本时,一切都按照我的预期行事。从视觉上看,这是指针切换到闭合拳头并出现一个显示所选文本的幽灵矩形的时刻。在那一刻,<webview> 事件处理程序不再接收所有鼠标事件。拖动文本时,应用程序似乎“冻结”了。
对此我有什么办法吗?
它可以用于:-
- 防止 WebView 实际拖动文本,让我以编程方式模拟它;
- 或者在文本拖动过程中找到一种“解冻”应用程序的方法,以便字段处于活动状态,可以看到事件并可以接收放置的文本。
【问题讨论】:
标签: javascript webview drag-and-drop mouseevent electron