我正在开发一项利用 HTML5 拖放功能的功能。这个功能只需要在 Firefox 中工作,所以我不担心跨浏览器的能力。这是我遇到的问题:我需要能够仅将我的数据拖到页面上的文本和密码字段中。如果我使用常规的 text/plain 数据类型,它可以正常工作,但它也允许将数据拖到搜索框中,这是不可接受的,因为我拖动的某些数据是敏感的(密码)。另一种方法是使用自定义数据类型,但是当我这样做时,我的文本和密码字段将停止接受丢弃。简而言之,我的代码现在看起来像这样:
document.getElementById('#init').addEventListener('dragstart', function(e){
e.dataTransfer.setData('text/link-uri', 'www.test.com');
e.dataTransfer.setData('text/sensitive', e.target.dataset.value);
e.dataTransfer.effectAllowed = 'copy';
});
window.addEventListener('dragenter', function(e){
if (e.target.type !== 'text' || e.target.type !== 'password') {
e.preventDefault();
}
});
window.addEventListener('dragover', function(e){
if (e.target.type !== 'text' || e.target.type !== 'password') {
e.preventDefault();
}
});
window.addEventListener('drop', function(e){
var data = e.dataTarnsfer.getData('text/sensitive');
e.target.value = data;
});
这里有解决方法吗?我不知何故需要禁止拖入搜索框的能力。因此,我需要从具有文本/纯文本数据类型的允许目标列表中排除搜索框,或者使文本/密码字段理解新的数据类型。任何指针将不胜感激。谢谢!卢卡