假设我在页面中有一个ul(li)列表:
<ul>
<li>xxx<li>
<li>xxx<li>
</ul>
Run Code Online (Sandbox Code Playgroud)
该元素li是可点击和可双击的,它们与这些事件相关联,并且我都return false在这两个事件中.
$('ul li').on('click',function(){
//do what I want
return false;
}).on('dblclick',function(){
//do what I want
return false;
});
Run Code Online (Sandbox Code Playgroud)
但是当用户双击该元素时,li将选择该文本内的文本.如何防止这种情况?
更新:
现在解决了,我使用以下代码与NiftyDude的css选择器:
$('ul li').on('click',function(){
//do what I want
return false;
}).....on('dragstart',function(){return false;}).on('selectstart',function(){return false;});
Run Code Online (Sandbox Code Playgroud) 我正在用电子构建桌面应用程序.作为其功能的一部分,我希望在特定事件触发时获取当前选定的文本.这个文本可以是任何地方 - 网页,pdf,崇高等.
有什么方法可以做到这一点吗?
每当用户完成选择 \xe2\x80\x94 时,我都会做一些事情,基本上,在每个事件mouseup之后的第一个事件上selectstart,我认为页面上的 \xe2\x80\x94 。我想将这个选择包装在一个元素中,通过 CSS 设置样式。我推测 Selection API 为此提供了一个事件;然而,似乎并非如此。
我不只是简单地监听,mouseup因为我特别寻找它来处理浏览器查找功能产生的选择(“在此页面查找\xe2\x80\xa6”; \xe2\x8c\x98+ f) 。
let selContainer = document.createElement(\'span\')\nspan.classList.add(\'user-selection\')\n\nconst wrapSelection = () => {\n window.getSelection().getRangeAt(0).surroundContent(selContainer)\n}\n\n\n/* \xe2\x94\x8f\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x93\n \xe2\x94\x83 \xe2\x94\x83\n \xe2\x94\x83 The Selection API only \xe2\x94\x83\n \xe2\x94\x83 affords these events: \xe2\x94\x83\n \xe2\x94\x83 \xe2\x94\x83\n \xe2\x94\x83 - selectionchange \xe2\x94\x83\n \xe2\x94\x83 - selectstart \xe2\x94\x8f\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\xab\n \xe2\x94\x83 \xe2\x94\x83issue\xe2\x94\x83\n \xe2\x94\x97\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\xbb\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x9b\n\n*/document.addEventListener(\'selectfinish\', wrapSelection)/*\n \xe2\x94\x97\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\xb3\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x9b\n \xe2\x94\x83\n \xe2\x94\x83\n no such\n event */Run Code Online (Sandbox Code Playgroud)\r\njavascript event-handling textselection dom-events observable
请参阅Sam Harris 的一篇博客文章中的文本选择行为。将其与 Bear 应用程序博客上的这篇文章进行比较。在 Firefox 上,没有区别。然而,在 Safari 上,彭博文章中的文本选择无处不在,而 Sam Harris 上的博客文章仍然设法简洁。
如何控制文本选择行为以始终只覆盖实际文本而不溢出?
在练习应用程序的其中一个视图中,我尝试以编程方式执行文本选择.
我能够(以编程方式)输入"文本选择模式",它由视图左上角的CursorControllers(AKA句柄)可视地指示.
如果我手动拖动右边的CursorController,然后再次单击它(在模拟器中),它按预期工作(完美),显示一条简短的消息:"文本复制到剪贴板".
但是当我尝试以编程方式拖动正确的CursorController时,没有任何反应.
我尝试这样做的方法是模拟MotionEvent.在视图中,我打电话给:
event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, x, y, 0);
MainActivity.onTouch(this, event);
Run Code Online (Sandbox Code Playgroud)
在MainActivity中我当然实现了OnTouchListener:
@Override
public boolean onTouch(View v, MotionEvent event) { // called BEFORE button's onTouchEvent()
Log.v("MainActivity::onTouch()", describeEvent(v, event));
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_UP:
if (!v.hasFocus()) {
v.requestFocus();
}
break;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,仅仅从onTouch返回'false',Android就会继续寻找另一个UI对象来使用MotionEvent对象,最终到达我的视野.
为什么不这样呢?
我必须遗漏一些非常基本的东西......
"标记是否处于活动状态"只是意味着与Emacs中的"区域处于活动状态"相同,无论是否启用了瞬态标记模式?因此激活标记与激活区域相同?
我感到很困惑,因为在很多地方似乎可以互换地使用两个短语,而region-active-p的定义似乎采取的立场是,当且仅当启用了瞬态标记模式且标记处于活动状态时,该区域才被认为是活动的.
(defun region-active-p ()
"Return t if Transient Mark mode is enabled and the mark is active.
Some commands act specially on the region when Transient Mark
mode is enabled. Usually, such commands should use
`use-region-p' instead of this function, because `use-region-p'
also checks the value of `use-empty-active-region'."
(and transient-mark-mode mark-active))
Run Code Online (Sandbox Code Playgroud)
是什么关系
区域突出显示(即区域的背景颜色不同)
地区活跃
马克是活跃的
当启用瞬态标记模式时,以及何时禁用它?
我知道可以使用以下CSS禁用用户文本选择。
.unselectable{
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
Run Code Online (Sandbox Code Playgroud)
但是当我有以下html时:
<p>selectable text 1</p>
<p class="unselectable">unselectable text</p>
<p>selectable text 2</p>
Run Code Online (Sandbox Code Playgroud)
用户仍然可以通过从页面的顶部(可选文本1)到页面的底部(可选文本2)进行选择来复制无法选择的文本。有什么方法可以防止这种情况?谢谢。
我试图通过使用以下代码禁用文本选择和复制粘贴在phonegap应用程序中.
CSS
-webkit-user-select:none;
Run Code Online (Sandbox Code Playgroud)
JavaScript的
$('body').on('cut copy paste',function(e){e.preventDefault();});
Run Code Online (Sandbox Code Playgroud)
它适用于所有操作系统平台,包括adroid 4.4+,但在4.1和4.2上存在问题.请帮忙.
两者都不支持android 4.1.2和4.2.1.
[测试Micromax帆布4和三星galaxy s2]
我在网上研究无济于事.我的应用程序需要一个显示在所选文本上方的浮动工具栏,因为在特定情况下无法访问默认文本选择控件,并且它们在我的活动中也显示奇怪的状态,并且具有半透明状态栏且没有操作栏.我从Google的设计指南(更准确地说是从这里)中找到了这个,并且没有提到如何做到这一点.

如果有人知道如何做到这一点,或者熟悉一个能够做到这一点的图书馆,我将非常感激.
我想在webView中保留文本选择,同时防止显示actioMode的任何上下文菜单.既不是新浮动的也不是旧的actionBar,只是选择句柄,当然还有选择行为.
挂钩startActionMode中的actionModeCallback允许我清除回调onCreateActionMode中菜单中的所有项目.
这在android 6上工作正常,因为根本不显示空的浮动菜单,并且保留了actionMode文本选择行为.
不幸的是,在android <6这会留下一个空的actionBar,如何完全删除它?
有没有一个干净的方法来获得这个?我正在使用ReactNative应用程序,但使用自定义扩展webview,我也可以访问mainActivity代码.
textselection android-webview android-actionbar android-actionmode react-native
textselection ×10
android ×2
css ×2
dom-events ×2
html ×2
javascript ×2
selection ×2
click ×1
copy ×1
cordova ×1
electron ×1
elisp ×1
emacs ×1
events ×1
highlighting ×1
node.js ×1
observable ×1
paste ×1
react-native ×1
region ×1
toolbar ×1
touch ×1