html 取消选中事件,div拖拽时取消文字选中默认事件的解决方法

当我们对div进行拖 拽时,会发现把div里的文字也选中了,其实我并不想选中文字 ,怎么解决呢?

我们分两种情况说,一种情况是直接给对象加事件如obj.onmousedown; 另外一种是为对象绑定事件addEventListener。

先说第一种:比较简单,高版本的浏览直接加return false来阻止默认事件,低版本的IE系列则用obj.capature&&obj.capature();

第二,在事件绑定以后,return false 不起作用了。这时我们需要使用oEvent.preventDefault()来解决。低版本IE还是一样。

顺便提一句:事件绑定attachEvent中,不能使用this

无标题文档

#div{ position:absolute; width:200px; height:200px; background:#ccc; color:#000}

ready(function(){

var oDiv=document.getElementById('div');

drag(oDiv);

})

//拖拽原理:改变obj的top值与left值

function drag(obj)

{

addEvent(obj,'mousedown',function(ev){

var oEvent=ev||event;

//不变的参考距离=mousedown时鼠标坐标-obj到页面的左边距

var disX=oEvent.clientX-obj.offsetLeft;

var disY=oEvent.clientY-obj.offsetTop;

addEvent(document,'mousemove',move);

addEvent(document,'mouseup',up);

oEvent.preventDefault();//阻止默认事件,取消文字选中

function move(ev)

{

var oEvent=ev||event;

var left=oEvent.clientX-disX;

var top=oEvent.clientY-disY;

obj.style.left=left+'px';

obj.style.top=top+'px';

obj.setCapture&&obj.setCapture();//低版本IE阻止默认事件,取消文字选中

}

function up()

{

removeEvent(document,'mousemove',move);

removeEvent(document,'mouseup',up);

obj.releaseCapture&&obj.releaseCapture();//低版本IE取消阻止默认事件

}

})

}

//添加事件绑定

function addEvent(obj,sEv,fn)

{

if(obj.addEventListener)

{

obj.addEventListener(sEv,fn,false);

}else{

obj.attachEvent('on'+sEv,fn);

}

}

//删除事件绑定

function removeEvent(obj,sEv,fnName)

{

if(obj.removeEventListener)

{

obj.removeEventListener(sEv,fnName,false);

}else{

obj.detachEvent('on'+sEv,fnName);

}

}

//代码加载完执行js

function ready(fn)

{

if(document.addEventListener)

{

document.addEventListener('DOMContentLoaded',fn,false)

}else{

document.attachEvent('onreadystatechange',function(){

if(document.readyState=='complete')

{fn();}

})

}

}

选不中我哦,选不中我的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现粘贴或拖拽上传文件,你可以使用HTML和JavaScript来完成。下面是一个简单的示例: HTML部分: ```html <div id="drop-area"> <p>将文件拖拽到此处</p> <input type="file" id="file-input"> </div> ``` JavaScript部分: ```javascript // 获取元素 var dropArea = document.getElementById('drop-area'); var fileInput = document.getElementById('file-input'); // 阻止浏览器默认行为 dropArea.addEventListener('dragover', function(event) { event.preventDefault(); }); dropArea.addEventListener('drop', function(event) { event.preventDefault(); var file = event.dataTransfer.files[0]; handleFile(file); }); fileInput.addEventListener('change', function() { var file = fileInput.files[0]; handleFile(file); }); // 处理文件 function handleFile(file) { // 处理文件的逻辑代码 console.log('上传文件:', file); } ``` 在上面的示例中,我们首先获取了`drop-area`和`file-input`元素,然后添加了一些事件监听器。当文件被拖拽到`drop-area`区域,`dragover`和`drop`事件会被触发。我们通过`event.preventDefault()`来阻止浏览器默认行为,并通过`event.dataTransfer.files`获取拖拽的文件。当用户选择了文件上传,`change`事件会被触发,我们同样通过`fileInput.files`获取选中的文件。 最后,我们将获取到的文件传递给`handleFile`函数,你可以在这个函数中编写自己的文件处理逻辑。 请注意,这只是一个简单的示例,你可能需要根据自己的需求进行适当的修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值