在JavaScript中禁用文本选择器

时间:2012-07-18 10:14:29

标签: javascript jquery function blackberry-webworks preventdefault

Prevent Defaults

在上面的链接中,它描述了如何防止JavaScript中的默认行为,但只显示了如何禁用所有默认值。

我只想禁用文本选择/上下文菜单

我该怎么做?或者我是以错误的方式解决这个问题?

由于以下原因,这是必要的

  • 在剧本上禁用粘贴/复制
  • 当使用自动完成时,弹出文本选择器并且非常烦人,有时会出现方式

这种烦恼是由J Query自动选择引起的,当它显示黑莓中的文本选择在尝试触摸时选择了一个。

如果想通过添加padding-top来解决这个问题:30px;自动完成所以它在文本选择器下方,但想要一个更好的方法来做到这一点。

由于

.noselect {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    -o-user-select: none;
    user-select: none;
}

尝试上面的代码,感谢堆叠好的overflower!这解决了浏览器上的问题(例如chrome),但没有在网页上播放书籍应用程序,这完全禁用了编辑/输入,这是不好的。

3 个答案:

答案 0 :(得分:4)

我认为你不需要javascript来禁用文本选择,CSS就足够了:

.noselect {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    -o-user-select: none;
    user-select: none;
}

jsFiddle here

修改 要在禁用文本选择的同时在编辑框中键入内容,可以使用此选项 http://jsfiddle.net/ruisoftware/aKkSx/3/ 基本上撤消jQuery select() event上的文本选择。不是最干净的方式,但可能会指出你正确的方向。

答案 1 :(得分:1)

在css文件中包含以下行。

-webkit-user-select: none;
-moz-user-select: none;
-khtml-user-select: none;
user-select: none;

答案 2 :(得分:0)

也可以内联处理。我认为CSS解决方案更好,但我总是想知道所有选项:

<element oncontextmenu="return false">
<input onselect="return false">  <!-- only <input>'s though... -->

为了防止选择文字,我认为你必须使用CSS或JS(听取拖动文字)或使用图像 请注意,用户可以访问浏览器显示的所有内容,因此阻止用户选择文本不会阻止他使用Chrome检查元素从源代码中删除解决方案或从源代码中复制粘贴。