我有一个网站,我想禁止用户选择输入区域以外的内容。我目前有一些CSS来禁用用户选择:
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-o-user-select: none;
user-select: none;
但是,这不包括Internet Explorer;因此,我需要实现一些JavaScript:
<body onselectstart="return false;">
通过CSS和JavaScript,我可以在所有流行的浏览器中使所有内容无法选择。但是,这段代码也使区域无法选择,这是可用性差的主要原因。我使用CSS来输入输入区域:
-webkit-user-select: text;
-khtml-user-select: text;
-moz-user-select: text;
-o-user-select: text;
user-select: text;
..正如您可能预料的那样,这不包括Internet Explorer,因为我使用JavaScript来禁止所有内容都可以选择。
除了输入区域,我该怎样做才能使所有内容无法选择?
答案 0 :(得分:2)
试试这个:oncontextmenu =“return false;”
将它放在你的身体标签中,然后使用类似的东西:
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
在javascript函数中为您想要选择的输入项。这应该会阻止触发body标签的事件的传播。
答案 1 :(得分:2)
由于事件冒泡到身体并且不是从那里发起的,我认为你可以检查实际目标节点的节点名称,并避免为某些节点上发生的事件返回false:
<body onselectstart="if ((event.target || event.srcElement).nodeName !== 'INPUT') return false;">
答案 2 :(得分:0)
您可以将专有IE属性unselectable="on"
添加到您想在IE中无法选择的任何元素中:
<p unselectable="on">I don't want IE users to easily select this text
for some reason.</p>
有关更详细的说明,请参阅Making things unselectable in IE。
如果从javascript执行此操作,请务必使用el.setAttribute("unselectable","on")
。只使用el.unselectable="on"
将无效。