衍生这个需求的原因
前端页面中偶尔会有拖拽,拖放的一个功能,大多数时候,我们会以click然后绑定onmousemove事件进行工作然后在onmouserout取消事件绑定,然而一旦其触发了选中其就不能正常触发onmouseout解绑,这就和我们的需求背道而驰了,于是为了保证他的正常工作,我们需要禁止选中。
普通网页
window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty(); //禁用拖动选中
vue
vue中由于渲染的方式不同,需要在整个创建之后才能去操作一个dom,所以我们如果写在组件的mounted内或者index.html的script标签内都不能正常达到我们的一个需求,我们可以使用created搭配$nextTick队列来完成渲染完毕后的一个禁用
代码如下:
created() {
this.$nextTick(() => {
// 禁用右键
document.oncontextmenu = new Function('event.returnValue=false');
// 禁用选择
document.onselectstart = new Function('event.returnValue=false');
});
},