Javascript “替代方案”;text/x-moz-url“;在Chrome/IE 10/Edge的Event.dataTransfer中
我正在为angular创建一个drag'n'drop指令,它检测从另一个浏览器窗口/选项卡拖动的URL,并刚刚发现还可以使用此属性读取原始锚文本:Javascript “替代方案”;text/x-moz-url“;在Chrome/IE 10/Edge的Event.dataTransfer中,javascript,angularjs,drag-and-drop,cross-browser,Javascript,Angularjs,Drag And Drop,Cross Browser,我正在为angular创建一个drag'n'drop指令,它检测从另一个浏览器窗口/选项卡拖动的URL,并刚刚发现还可以使用此属性读取原始锚文本: xMozUrl=event.dataTransfer.getData('text/x-moz-url') 这似乎非常方便,因为我可以显示链接文本 Mozilla的customEvent.dataTransfer属性在从拖动的锚点检索实际链接文本时是否有一个(最前沿的)替代项?我在文件上找不到任何东西。IE 10/11/Edge也非常感谢 在某些上下
xMozUrl=event.dataTransfer.getData('text/x-moz-url')代码>
这似乎非常方便,因为我可以显示链接文本
Mozilla的customEvent.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根本不支持将锚拖动到打开的页面。11月10日,URL刚刚打开,就好像没有事件一样。preventDefault()Chrome似乎支持“text/x-moz-URL”格式
对于EDGE,有一种称为“UserActivityJsonArray
”的格式。这是一个带有“title”和“uri”的JSON对象。这似乎是最近的发展(见:)。然而我还没有找到IE10/11的任何东西