Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTML5在不同浏览器和应用程序之间的拖放_Html_Drag And Drop_Cross Browser - Fatal编程技术网

HTML5在不同浏览器和应用程序之间的拖放

HTML5在不同浏览器和应用程序之间的拖放,html,drag-and-drop,cross-browser,Html,Drag And Drop,Cross Browser,撇开浏览器的怪癖不谈,HTML5可以在同一浏览器的不同窗口之间进行拖放。当我在不同的浏览器中运行web应用程序时,我仍然会得到dragover事件,但是数据丢失了 以下是dragStart和dragOver处理程序。不是很有趣,它们只是实现MDN告诉您要做的事情。代码是Typescript public dragStart(e: DragEvent): boolean { e.dataTransfer.setData("text/json", JSON.stringify(this.

撇开浏览器的怪癖不谈,HTML5可以在同一浏览器的不同窗口之间进行拖放。当我在不同的浏览器中运行web应用程序时,我仍然会得到dragover事件,但是数据丢失了

以下是dragStart和dragOver处理程序。不是很有趣,它们只是实现MDN告诉您要做的事情。代码是Typescript

  public dragStart(e: DragEvent): boolean {
    e.dataTransfer.setData("text/json", JSON.stringify(this.Model));
    return true;
  }

  public dragOver(e: DragEvent): boolean {
    if (e.dataTransfer.items.length) {
      let raw = e.dataTransfer.items[0];
      if (raw && raw.type === "text/json") {
        //highlight drop target
      }
      return false;
    }
    return true;
  }
这段代码运行在两个Chrome窗口中,可以在两个窗口之间拖动。这段代码运行在两个Firefox窗口中,可以正常工作

从Chrome到Firefox,或者从Firefox到Chrome,我得到事件,但没有数据

为什么,我能做些什么?如果它无法工作,那么如果你(谷歌、Mozilla等)不打算公开数据,那么为从另一个应用程序拖动而触发拖动事件又有什么意义呢

从一个浏览器应用程序复制到另一个浏览器应用程序可能不是世界末日;一个给定的用户很可能会同时使用同一个浏览器。但我曾设想过与桌面应用程序进行互操作,这并不是一个好兆头


当我将setData和getData使用的“mime类型”从
text/json
(数据就是这样)更改为
text/plain
,它突然在Firefox和Chrome之间工作,我还可以将一个节点拖到文本编辑器中,json作为文本插入,这并不奇怪

现在它可以与Edge一起使用。天哪,根据mdn,你可以创造自己的价值观。他们漏掉了“但如果你想与另一个应用程序进行互操作,就不能”

我曾想用这个类型来决定是否允许删除,而
text/plain
对我来说帮不了什么忙。我可以尝试解析,如果成功,我可以检查一些属性,但这是相当重的,根据它将无论如何无法工作