首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否在Internet Explorer中使除<input>之外的所有文本都不可选?

是否在Internet Explorer中使除<input>之外的所有文本都不可选?
EN

Stack Overflow用户
提问于 2011-11-16 08:05:03
回答 3查看 1.7K关注 0票数 5

我有一个网站,我想禁止用户选择除输入区域以外的内容。我目前有一些CSS来禁用用户选择:

代码语言:javascript
运行
复制
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-o-user-select: none;
user-select: none;

但是,这并不包括Internet Explorer;因此,我需要实现一些JavaScript:

代码语言:javascript
运行
复制
<body onselectstart="return false;">

通过CSS和JavaScript,我可以让所有内容在所有流行的浏览器上都不可选。但是,这段代码也使得区域不可选,这是可用性差的一个主要情况。我使用CSS使输入区域可选:

代码语言:javascript
运行
复制
-webkit-user-select: text;
-khtml-user-select: text;
-moz-user-select: text;
-o-user-select: text; 
user-select: text;

。。正如您可能已经预料到的,这并不包括Internet Explorer,因为我使用JavaScript禁用了所有可选择的内容。

我该怎么做才能使除输入区域以外的所有内容都不可选?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-16 23:01:13

由于事件在主体中冒泡,而不是在那里产生,我认为您可以检查实际目标节点的节点名,并避免在某些节点上发生的事件返回false:

代码语言:javascript
运行
复制
<body onselectstart="if ((event.target || event.srcElement).nodeName !== 'INPUT') return false;">
票数 3
EN

Stack Overflow用户

发布于 2011-11-16 09:39:35

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

将其放入body标签中,然后使用如下内容:

代码语言:javascript
运行
复制
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();

在javascript函数中为您想要选择的输入项。这应该会停止触发body标记的事件的传播。

票数 2
EN

Stack Overflow用户

发布于 2011-11-16 22:06:11

您可以将专有的IE属性unselectable="on"添加到要在IE中设置为不可选的任何元素:

代码语言:javascript
运行
复制
<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"是行不通的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8145574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档