我有一些文本div和contenteditable ="true".当我单击这个div - 工作一些我的脚本时,它不是很重要.当我双击这个div时 - 需要编辑div中的文本.编辑文本只需要在双击之后,而不是单次之后.而且非常重要,当我双击div时 - 插入符号需要留在鼠标光标下.不需要选择文字.我发现了一些单/双脚本.但有问题.当我双击div - 文本是选择.选择没有必要.需要我点击的编辑器插入符号.我不明白怎么做. http://jsfiddle.net/X6auM/
我需要通过给它一个ID选择器来选择一系列HTML.我下面的内容在Chrome和Firefox中效果很好,但在IE 10(标准模式)中却没有.(IE的旧版本不是这个问题)
function selectElementContents(elementId) {
var elemToSelect = document.getElementById(elementId);
var selection= window.getSelection();
var rangeToSelect = document.createRange();
rangeToSelect.selectNodeContents(elemToSelect);
//console.log(rangeToSelect);
selection.removeAllRanges();
selection.addRange(rangeToSelect);
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是,该行将console.log(rangeToSelect)绝对记录IE 10中的正确文本,但它不会选择它.
当我在Android设备上的Chrome 43中选择文字时,我会看到"触摸搜索"弹出窗口.我们目前正在为我们网站上的某项功能使用文字选择,而这项新的Chrome功能会干扰我们的部分用户界面.
从长远来看,我们将制定新的UI/UX以与此功能并行工作,但在此期间,我们希望在我们的Web应用程序上禁用它.
我们可以添加一些元标记或JavaScript来关闭它吗?有谁知道这是否可能?
我想以编程方式选择页面上的所有文本,其结果与我按下组合键Ctrl + A的结果完全相同.
使用的问题document.getSelection().selectAllChildren(body)是选择还将包括用户无法选择的文本节点,即CSS中定义的<script> </script>节点user-select:none:
<div style="-moz-user-select:none">将被选中</div>
modify选择对象的方法可以像这样使用:
selection.modify("extend", "forward", "documentboundary");
将选择从文档的开头扩展到结尾,这将忽略任何脚本或样式元素的内容和元素-moz-user-select:none- 遗憾的是Firefox不允许documentboundary作为3.参数和word无济于事.
有没有快速的方法来实现这一目标?只需要在Firefox中工作.
编辑(不太好解决方案):选择第一个文本节点,然后selection.modify('extend', 'forward', 'line')重复使用,selection.focusNode而不等于最后一个文本节点 - 但根据文档的长度,这需要几秒钟!
编辑: selection.selectAllChildren将在Chrome中按预期工作,其中user-select:none不会选择文本元素- 不幸的是,在FF中有不同的行为.
编辑:这不是这篇文章的重复,因为我既不解决contenteditable元素也不关心它们;)
我正在尝试设计自定义键盘,键盘的一部分是允许用户选择一些文本并进行编辑.我希望为用户提供能够切换锚点选择的能力,以便他/她能够从选择的任一端扩展/缩小选择.
直到现在我已经传递了简单的ctrl-a/shift-arrow键以允许用户这样做,但是使用这种方法我无法切换选择锚点,我所知道的都没有.
我试图在android api中使用Selection类,但无济于事.我最初想过交换Selection.SELECT_END和Selection.SELECT_START变量可能会做的伎俩,但后来我意识到这些是最终变量,因此是一个死胡同.setSelection(Spannable text, int start, int stop)在Selection类中有一个命名的方法,但是我无法理解参数"Spannable text".它是什么?我从哪里得到它?
所以问题是,我怎样才能实现这一目标?
我正在开发的键盘是开源的,如果你需要检查代码以理解问题的任何部分,你可以在这里访问代码
Firefox 和 Edge 没有这个问题。
使用 Google Chrome 浏览器时,我尝试选择代码或文本。文本已选定,但不可见。通常的背景突出显示是不可见的。大多数其他网站看起来都不错。GitHub 网站的行为是这样的。
看起来好像是 GitHub 网站的一个错误,可能是因为 CSS 样式(阻止更改文本背景突出显示)来自 GitHub 服务器。
请观看视频: https://www.youtube.com/watch?v =HA1gmRHvbWs
我还注意到 Veutify Playground 的代码编辑器中发生了这种情况: https: //play.vuetifyjs.com/
我有一个JTextArea.我有一个函数,在调用某个组合时选择一些文本.它做得很好.问题是,我想在选择一些文本并按下VK_LEFT时将插入符号移动到选择位置.KeyListener正确实现,我以其他方式测试它.问题是,当我编写以下代码时:
@Override public void keyPressed( KeyEvent e) {
if(e.getKeyChar()==KeyEvent.VK_LEFT)
if(mainarea.getSelectedText()!=null)
mainarea.setCaretPosition(mainarea.getSelectionStart());
}
Run Code Online (Sandbox Code Playgroud)
并将此侦听器的实例添加到mainarea,选择一些文本(使用我的函数)并按向左箭头键,插入符号位置设置为选择的结尾...而我不会在开头...什么是这件事?:S
我<pre><code>在一个单独的行号中有一些源代码<div>.选择文本后,行号随附,然后复制.有没有办法阻止行号成为选择的一部分,即使我选择源代码块上方和下方的元素?
我想避免使用JavaScript来为那些浏览它的人带来好处.(使用JavaScript,我会添加一个按钮来隐藏行号).
unselectable="on"并且各种特定于供应商的user-selectCSS属性不起作用; 这些数字仍然被选中和复制.
我正在使用OrbitControls.js制作一个Three.js项目,但我意识到我无法使用OrbitControls选择(突出显示)任何文本.
这里的示例链接:http://threejs.org/examples/#misc_controls_orbit (在示例的顶部尝试选择文本"轨道控制示例",我们不能这样做)
那么,如何使用OrbitControl选择(突出显示)文本?
(或者我每次想要复制文本时都必须禁用控制?)
谢谢.
我有一个TextView我希望允许用户搜索特定字符串.如果找到该字符串,则应突出显示.使用背景跨度太慢和笨拙,所以我想弄清楚我是否可以让它选择字符串.我知道EditText这可以使用setSelection(),但我不希望用户能够编辑文本,同时仍然能够手动突出显示文本,我似乎无法管理EditText.
我猜,那么它是一个或者; 它是既可能以编程方式选择文本TextView 或可能允许文本选择,而不允许编辑在EditText?
注意:我实际上正在使用自定义视图扩展TextView,所以我假设它是那个或扩展EditText; 我只是不确定哪个(如果有的话)会起作用.