Html 生成除<;输入>;在Internet Explorer中不可选择?

Html 生成除<;输入>;在Internet Explorer中不可选择?,html,css,javascript,internet-explorer,Html,Css,Javascript,Internet Explorer,我有一个网站,我想禁止用户选择除输入区域以外的内容。我目前有一些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;"&g

我有一个网站,我想禁止用户选择除输入区域以外的内容。我目前有一些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;">
。。正如您所料,这并不包括Internet Explorer,因为我使用JavaScript禁用了所有内容的可选性


如何使除输入区域外的所有内容都不可选择?

试试这个:oncontextmenu=“return false;”

把它放在你的身体标签上,然后使用类似于:

e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();

在javascript函数中,输入您想要选择的项目。这将停止触发body标记的事件的传播。

您可以将专有IE属性
unselectable=“on”
添加到要在IE中使其不可选择的任何元素:

<p unselectable="on">I don't want IE users to easily select this text 
  for some reason.</p>

我不希望IE用户轻松选择此文本 出于某种原因

有关更详细的说明,请参阅


如果从javascript执行此操作,请确保使用
el.setAttribute(“unselectable”,“on”)
。仅使用
el.unselectable=“on”
将不起作用。

因为事件是向上冒泡的,而不是从身体开始的,我认为您可以检查实际目标节点的节点名称,并避免在某些节点上发生的事件返回false:

<body onselectstart="if ((event.target || event.srcElement).nodeName !== 'INPUT') return false;">


当然,这个解决方案假设浏览器中打开了JavaScript。没有答案,我只想到一个问题——你到底为什么要这样做?不是为了“安全”。这会让我很恼火,然后我会按Ctrl+U组合键查看源代码,然后从那里进行复制。可能的复制对于特定元素来说,这是个好主意。然而,我很乐意将此应用于所有元素;这很简单。谢谢
<body onselectstart="if ((event.target || event.srcElement).nodeName !== 'INPUT') return false;">