Javascript 将自定义数据类型拖放到文本框中
我正在开发一个利用HTML5拖放功能的功能。这个功能只需要在Firefox中使用,所以我不担心跨浏览器功能。这里是我遇到的问题:我需要能够将我的数据只拖到页面上的文本和密码字段中。如果我使用常规文本/纯数据类型,它可以正常工作,但它也允许将数据拖动到搜索框中,这是不可接受的,因为我拖动的一些数据是敏感的(密码)。另一种方法是使用自定义数据类型,但当我这样做时,我的文本和密码字段不再接受删除。简而言之,我现在的代码如下所示:Javascript 将自定义数据类型拖放到文本框中,javascript,html,drag-and-drop,Javascript,Html,Drag And Drop,我正在开发一个利用HTML5拖放功能的功能。这个功能只需要在Firefox中使用,所以我不担心跨浏览器功能。这里是我遇到的问题:我需要能够将我的数据只拖到页面上的文本和密码字段中。如果我使用常规文本/纯数据类型,它可以正常工作,但它也允许将数据拖动到搜索框中,这是不可接受的,因为我拖动的一些数据是敏感的(密码)。另一种方法是使用自定义数据类型,但当我这样做时,我的文本和密码字段不再接受删除。简而言之,我现在的代码如下所示: document.getElementById('#init').add
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;
});
这里有解决办法吗?我需要禁止将其拖到搜索框中。因此,我需要将searchbox从具有文本/普通数据类型的允许目标列表中排除,或者使文本/密码字段理解新的数据类型。任何指点都将不胜感激。
谢谢
卢卡好吧,经过一番摸索,我终于克服了这个问题。对于任何感兴趣的人,我基本上都会设置text/plain,以便生成一些虚假数据,并且只在drop处理程序中使用我的自定义数据类型。这样,对于我的表单,它总是使用实际值,但当我将值拖到搜索框时,它会拾取虚假数据