【问题标题】:How can I prevent selecting text in Google Chrome?如何防止在 Google Chrome 中选择文本?
【发布时间】:2013-07-10 00:38:58
【问题描述】:

不 oEvent.preventDefault();在GC工作?我需要在触发 onmove 事件时防止选择文本。

编辑:事实证明这很容易......

function disableSelection() {
   document.onselectstart = function() {return false;} // ie
   document.onmousedown = function() {return false;} // others
}
function enableSelection() {
   document.onselectstart = null; // ie
   document.onmousedown = null; // others
}

之后,在 move 事件上不会触发文本选择(即在 select 事件上 - 即 - 确实是 ie!)

【问题讨论】:

  • 在我看来,最好通过这种方法(或event.preventDefault(),它等效但更现代)而不是尝试通过浏览器之间不同的 CSS 属性来抑制选择不是那么可预测。

标签: javascript


【解决方案1】:

-webkit-user-select: noneCSS样式控制是否允许用户选择
元素的文本。

为了完整起见,这涵盖了所有支持的浏览器(IE 不被视为网络浏览器):

.no-select
{
   user-select: none;
   -o-user-select:none;
   -moz-user-select: none;
   -khtml-user-select: none;
   -webkit-user-select: none;
}

要通过 Javascript 来实现,只需创建一个类并添加节点的属性。

【讨论】:

  • IE 不被视为网络浏览器?怎么样?
  • 在stackoverflow的问题数据库中搜索,看看你能找到多少'Works on firefox, doesn't work on IE'问题:)
  • 您可以将 -o-user-select:none 添加到 Opera 支持列表中
  • +1 表示答案,+1 表示 IE 抨击。呸,我们只能给一个 +1 :) 只要可用,Bashing IE 始终是Time.now
  • 对于那些在需要 IE 的地方工作的人,IE10 使用-ms-user-select添加了对此的支持
【解决方案2】:

使用 JavaScript 来实现:

var el = document.getElementById("myElement"), s = el.style;
s.userSelect = "none";
s.webkitUserSelect = "none";
s.MozUserSelect = "none";
el.setAttribute("unselectable", "on"); // For IE and Opera

请注意,对于 IE 和 Opera,unselectable 属性不会被元素的子元素继承,因此el 的任何子元素也需要将unselectable 设置为"on"

【讨论】:

    猜你喜欢
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 2017-07-11
    • 2012-04-28
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多