禁用文本选择并添加例外

Posted

技术标签:

【中文标题】禁用文本选择并添加例外【英文标题】:disable text selection and add exceptions 【发布时间】:2011-06-10 08:49:21 【问题描述】:

如果我将这种风格用于<body>

onmousedown='return false;' onselectstart='return false;'

是否可以通过使用 javascript 输入 textareas 和选择来给出异常? 如果是的话,你能告诉我怎么做吗?

【问题讨论】:

【参考方案1】:

实际上,您可以禁用文本选择,而不需要笨拙的 JavaScript 事件处理程序。在这里查看我的答案:How to disable text selection highlighting using CSS?

总结:在 IE 中使用 CSS 和 unselectable expando。

CSS:

*.unselectable 
   -moz-user-select: -moz-none;
   -khtml-user-select: none;
   -webkit-user-select: none;
   -o-user-select: none;
   user-select: none;

HTML:

<div id="foo" unselectable="on" class="unselectable">...</div>

【讨论】:

好的,它会关闭文本的选择,但我如何选择输入文本区域和选择按钮? 这样做仍然允许您在输入和文本区域中选择文本。 是的,是的)我已经测试过了,但它在 Opera 中不起作用...... :( 真的吗?在 Opera 中对我来说效果很好。你有我可以看到的测试页吗?【参考方案2】:

您需要防止 event bubbling 用于文本框和选择。

您可以使用:input 选择器来选择所有输入、文本区域、选择和按钮元素。

类似

$(":input").bind("mousedown", function(e)
    e.stopPropagation();
);

查看working demo

【讨论】:

但是你用javascript屏蔽了body内容,我想用css屏蔽,用javascript添加异常

以上是关于禁用文本选择并添加例外的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用提交按钮,直到所有文本字段都已满并选择文件

通过javascript每次点击动态禁用文本选择?

如何禁用 ctrl+click 在 IE 10 中选择文本?

在 Tableview 上添加开关按钮并禁用单元格选择

Pycharm:禁用选择文本上的复制

禁用文本框丢失视图状态