我有一个网站,我想禁止用户选择除输入区域以外的内容。我目前有一些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禁用了所有可选择的内容。
我该怎么做才能使除输入区域以外的所有内容都不可选?
发布于 2011-11-16 23:01:13
由于事件在主体中冒泡,而不是在那里产生,我认为您可以检查实际目标节点的节点名,并避免在某些节点上发生的事件返回false:
<body onselectstart="if ((event.target || event.srcElement).nodeName !== 'INPUT') return false;">
发布于 2011-11-16 09:39:35
试试这个: oncontextmenu="return false;“
将其放入body标签中,然后使用如下内容:
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
在javascript函数中为您想要选择的输入项。这应该会停止触发body标记的事件的传播。
发布于 2011-11-16 22:06:11
您可以将专有的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"
是行不通的。
https://stackoverflow.com/questions/8145574
复制相似问题