0

Prevent Defaults禁用文本选择在JavaScript

在上面的链接就介绍如何防止在JavaScript中的默认行为,但只能说明你如何禁用所有默认值。

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

我怎么会去吗?还是我以错误的方式去做这件事?

这是nessary由于以下原因

  • 上打书
  • 禁用粘贴/复制使用自动完成文本选择弹出,是很烦人的,有时在路上

这个烦恼是由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),但是不能在网络上运行play book应用程序,这完全禁用了编辑/输入,这是不好的。

+2

为什么?即使感觉有必要,我也不会改变或消除任何默认行为。几乎每一次,它都不是。 – Purag 2012-07-18 10:15:40

+0

解释有问题,编辑:) – LmC 2012-07-18 10:18:39

回答

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上的文本选择。不是最干净的方式,但可能会使您指向正确的方向。

+0

你好,很好的尝试,但现在这个代码停止在我的输入框中键入anythign +还删除文本选择器...谢谢 – LmC 2012-07-18 11:06:33

+0

更新的问题请检查 – LmC 2012-07-18 11:24:55

+0

@LiamMcCann检查我的更新 – 2012-07-18 11:31:40

1

在css文件中包含以下行。

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

啊......太晚:) – 2012-07-18 11:01:11

+0

嗨,刚刚在我的webworks应用程序中试过这段代码,它仍然显示 – LmC 2012-07-18 11:04:12

+0

您是否包含在html或body标记中? – 2012-07-18 11:56:03

0

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

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

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

+0

也试过这个,它不起作用蓝色文本选择器仍然显示:( – LmC 2012-07-18 11:27:40

+0

什么样的元素?@LiamMcCann – 11684 2012-07-18 14:57:56

+0

input type =“text” – LmC 2012-07-18 14:58:25