现代浏览器有一个常见的功能,用户可以选择一些文本并将其拖动到输入字段中。如果在同一字段内,则会移动文本;如果在不同字段之间,则会进行复制。
我该如何禁用这个功能?如果没有通用方法,我主要关注Firefox。这是一个内部网页应用程序,因此我也对修改浏览器/获取插件来执行此操作感兴趣。也许可以通过一些系统级别的设置(我使用的是Windows XP)。
我需要保留默认的选择-复制-粘贴功能。
背景是我有多个字段数据输入表格,用户经常出现误操作而意外拖动某些内容。
现代浏览器有一个常见的功能,用户可以选择一些文本并将其拖动到输入字段中。如果在同一字段内,则会移动文本;如果在不同字段之间,则会进行复制。
我该如何禁用这个功能?如果没有通用方法,我主要关注Firefox。这是一个内部网页应用程序,因此我也对修改浏览器/获取插件来执行此操作感兴趣。也许可以通过一些系统级别的设置(我使用的是Windows XP)。
我需要保留默认的选择-复制-粘贴功能。
背景是我有多个字段数据输入表格,用户经常出现误操作而意外拖动某些内容。
为了归档目的:
<body ondragstart="return false" draggable="false"
ondragenter="event.dataTransfer.dropEffect='none'; event.stopPropagation(); event.preventDefault();"
ondragover="event.dataTransfer.dropEffect='none';event.stopPropagation(); event.preventDefault();"
ondrop="event.dataTransfer.dropEffect='none';event.stopPropagation(); event.preventDefault();"
>
它实现了我想要的功能。你也可以将 ondrag* 处理程序添加到表单元素中,比如 <input ondragenter=...>。
参考网址:https://developer.mozilla.org/En/DragDrop/Drag_Operations
这个东西有效......试试吧。
<BODY ondragstart="return false;" ondrop="return false;">
希望有所帮助。谢谢。
function preventDrag(event)
{
if(event.type=='dragenter' || event.type=='dragover' || //if drag over event -- allows for drop event to be captured, in case default for this is to not allow drag over target
event.type=='drop') //prevent text dragging -- IE and new Mozilla (like Firefox 3.5+)
{
if(event.stopPropagation) //(Mozilla)
{
event.preventDefault();
event.stopPropagation(); //prevent drag operation from bubbling up and causing text to be modified on old Mozilla (before Firefox 3.5, which doesn't have drop event -- this avoids having to capture old dragdrop event)
}
return false; //(IE)
}
}
//attach event listeners after page has loaded
window.onload=function()
{
var myTextInput = document.getElementById('textInput'); //target any DOM element here
if(myTextInput.addEventListener) //(Mozilla)
{
myTextInput.addEventListener('dragenter', handleEvents, true); //precursor for drop event
myTextInput.addEventListener('dragover', handleEvents, true); //precursor for drop event
myTextInput.addEventListener('drop', preventDrag, true);
}
else if (myTextInput.attachEvent) //(IE)
{
myTextInput.attachEvent('ondragenter', preventDrag);
myTextInput.attachEvent('ondragover', preventDrag);
myTextInput.attachEvent('ondrop', preventDrag);
}
}
#ondragstart is for IE, onmousedown is for firefox
ondragstart="return false" onmousedown="return false"
onselectstart
可能会很有用。 - DisgruntledGoat if(document.activeElement.tagName == "INPUT"||document.activeElement.tagName == "TEXTAREA"){
event.preventDefault()
return
}
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("Text", ev.target.id);
}
function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
}
并且:
<input type="text" ondrop="drop(event)" ondragover="allowDrop(event)">
ondraggesture
被旧版本的Firefox支持,而不是ondragstart
。