防止在HTML中select
我在HTML页面上有一个div,每当我按下鼠标移动它,它就会显示“不能删除”光标,就像它select的东西。 有没有办法禁用select? 我尝试CSS用户select没有没有成功。
user-select
的专有变体将适用于大多数现代浏览器:
*.unselectable { -moz-user-select: -moz-none; -khtml-user-select: none; -webkit-user-select: none; /* Introduced in IE 10. See http://ie.microsoft.com/testdrive/HTML5/msUserSelect/ */ -ms-user-select: none; user-select: none; }
对于IE <10和Opera,您将需要使用您希望不可选的元素的不可选属性。 您可以使用HTML中的属性来设置它:
<div id="foo" unselectable="on" class="unselectable">...</div>
可悲的是,这个属性没有被inheritance,这意味着你必须在<div>
的每个元素的开始标签中放置一个属性。 如果这是一个问题,你可以使用JavaScript来recursion地为元素的后代做这件事:
function makeUnselectable(node) { if (node.nodeType == 1) { node.setAttribute("unselectable", "on"); } var child = node.firstChild; while (child) { makeUnselectable(child); child = child.nextSibling; } } makeUnselectable(document.getElementById("foo"));
这似乎CSS用户select不阻止图像拖放…所以..
HTML:
<img src="ico.png" width="20" height="20" alt="" unselectable="on" /> Blabla bla blabla
CSS:
* { user-select: none; -khtml-user-select: none; -o-user-select: none; -moz-user-select: -moz-none; -webkit-user-select: none; } ::selection { background: transparent;color:inherit; } ::-moz-selection { background: transparent;color:inherit; }
JS:
$(function(){ $('*:[unselectable=on]').mousedown(function(event) { event.preventDefault(); return false; }); });
我用鼠标下的cancelBubble=true
和stopPropagation()
来移动处理程序。
event.preventDefault()
似乎做的(在IE7-9和Chrome中testing):
jQuery('#slider').on('mousedown', function (e) { var handler, doc = jQuery(document); e.preventDefault(); doc.on('mousemove', handler = function (e) { e.preventDefault(); // refresh your screen here }); doc.one('mouseup', function (e) { doc.off('mousemove', handler); }); });
你有select的某种透明图像吗? 通常,拖动图像时会出现“无法放下”图标。 否则,通常在拖动时select文本。 如果是这样,你可能不得不使用z-index将图像放在所有的东西后面。