【问题标题】:alternative for "text/x-moz-url" in Chrome / IE 10/Edge in Event.dataTransferEvent.dataTransfer 中 Chrome / IE 10/Edge 中“text/x-moz-url”的替代品
【发布时间】:2016-08-17 18:52:23
【问题描述】:

我正在为 Angular 创建一个小拖放指令,该指令检测从另一个浏览器窗口/选项卡拖动的 URL,并且刚刚发现还可以使用此属性读取原始锚文本:

xMozUrl = event.dataTransfer.getData('text/x-moz-url');

https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Recommended_Drag_Types#link

这看起来很方便,因为我可以显示链接文本

在从拖动的锚点中检索实际的链接文本时,Mozilla 的自定义 Event.dataTransfer 属性是否有(出血边缘)替代方案?我在文档上找不到任何东西。 IE 10/11/Edge 也非常感谢。

在某些情况下,这是当前整个 'drop' 监听器:

$document.bind("drop", function(event) {
  event.preventDefault();
  event.stopPropagation();
  if (event.target == target || event.target.parentNode == target) {
    try {
      var url, 
          linkText = '',
          xMozUrl = event.dataTransfer.getData('text/x-moz-url');

      if (xMozUrl.length > 0) {
        // mozilla also sends the link text so we can extract some kind of 'title'
        var uriParts = xMozUrl.split("\n");
        url          = uriParts[0];
        linkText     = uriParts[1];
      } else {
        // should return the first valid URL found in dataTransfer
        // https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Recommended_Drag_Types#link
        url   = event.dataTransfer.getData('URL').toString();
        title = '';
      }

      if (url.length > 0) {
        $scope.url = url;
        $scope.$emit('drag-link:drag:drop', {
          url   : url,
          title : linkText
        });
      }

    } catch (e) {
      console.error(e);
    }
  } else {
    console.log("drop", event, event.target, event.toElement, $elem);
  }
});

编辑

刚刚通过测试发现 IE 10,11 根本不支持将锚点拖动到打开的页面。在 10 月 11 日,URL 刚刚打开,好像没有 event.preventDefault()

【问题讨论】:

    标签: javascript angularjs drag-and-drop cross-browser


    【解决方案1】:

    Chrome 似乎支持“text/x-moz-url”格式。

    对于 EDGE,有一种称为“UserActivityJsonArray”的格式。这是一个带有“title”和“uri”的 JSON 对象。这似乎是最近的发展(见:Windows 10 SDK Preview Build 17125)。而我还没有为 IE10/11 找到任何东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      • 2010-12-09
      • 2011-07-24
      相关资源
      最近更新 更多