在 JavaFX 和 HTML5 之间拖放自定义数据类型

Custom DataType in drag'n'drop between JavaFX & HTML5

我想在基于 JavaFX 的应用程序中混合使用 JavaFX 和 HTML5/JS。 HTML5/JS 组件将使用 JavaFX WebView 集成,每个 HTML5/JS 组件将有一个 WebView 实例。

考虑到 class Person{String:firstname, String:lastname},我正在研究在 JavaFX 和HTML5。我的目标是能够将我的模型对象删除为以下 MIME 类型:

  1. "text/plain" - 这是文本的标准 MIME 类型。我的数据类似于“Jerry seinfeld 先生
  2. "application/x-pigelvy-person" - 这将是我自己的 MIME 类型,它会让我检测到 Drag'n'Drop 操作实际上是关于一个 Person 对象的.然后数据将被拖动的人转换为 JSON 例如 {"firstname":"jerry","lastname":"seinfeld"}.

您可以在 https://github.com/pigelvy/dnd_jfx-js 查看我的来源。

开始拖动 JavaFX ListView 并将 Person 对象放入 ClipboardContent 中作为“text/plain”和“application/x-pigelvy-person ”,我只能获取“text/plain”的数据(尽管 JS 对象 DragEvent.dataTransfer)。无论我使用哪种浏览器(应用程序中的 WebView 或应用程序外的 Firefox/Chrome),我都会得到相同的结果

我刚刚读了 HTML5 D'n'D specification and based on section 7.8.4.1 and 7.8.4.2 我知道 D'n'D 应该是正确的,即使它 starts/ends from/in 另一个 application/document.

我刚刚注意到一些奇怪的事情:

  1. 在 2 个 Firefox 选项卡或 2 个 Opera 选项卡上加载我的 HTML 页面,我可以访问我的自定义 MIME 类型以及“text/plain”。
  2. 在同一个 JavaFX 应用程序中的 2 个 JavaFX WebView 上加载我的 HTML 页面,我确实可以访问我的自定义 MIME 类型,但只能访问“text/plain".

为什么我的自定义数据类型不可用?有什么我不知道的限制吗?

Drag'n Drop 不在 HTML5 规范中。 HTML5.1

正在进行中

事实是,今天,无论出于何种原因,都不可能在不同的浏览器和 JavaFX WebView 之间 D'n'D 异国情调的 MIME 类型。