如果所选范围为空,则在光标处应用“选择”
Rangy applyToSelection at the cursor if the selected range is empty?
这感觉像是一个愚蠢的问题。
我正在使用javascript中出色的Rangy库将CSS类从下拉列表中应用于选定的文本,就像在富文本编辑器中一样。
但是,如果用户只是键入文本而不进行选择,并且他们通过下拉列表应用类,则 ragy 的"applyToSelection"什么都不做,因为大概它是一个空范围。
我知道有一些困难的方法可以在选定的光标位置添加适当的div并输入它,但是,在我开始这些之前,我是否缺少一种简单的方法来做到这一点,无论是使用 Rangy 还是普通 JS?
谢谢!
这是我最终得到的代码,它在IE11中运行良好,但尚未在其他浏览器中进行测试:
var actual_textarea = document.getElementById("my_input_textarea");
actual_textarea.focus();
var selectedInstance = this.ne.selectedInstance;
var range = selection.getRangeAt(0);
range.deleteContents();
var new_div = document.createElement("div");
new_div.innerHTML = "<div class='" + this.rangyClassPrefix + elm + "'></div>";
var frag = document.createDocumentFragment();
var node, lastNode;
while (node = new_div.firstChild)
{
lastNode = frag.appendChild(node);
}
range.insertNode(frag);
if (lastNode)
{
range = range.cloneRange();
range.selectNodeContents(lastNode);
range.collapse(false);
selection.removeAllRanges();
selection.addRange(range);
}
请注意,我首先设置了焦点,因为样式是通过对其他元素的焦点更改单击来应用的。
对于范围克隆是值而不是引用克隆的想法,我仍然有点模糊,但在添加时仍然可以完美运行,因为这违反直觉,但它确实有效。
谢谢!
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- Emberjs应用程序加载在除Index之外的所有路由上
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 跟踪在页面加载时应用内联样式的JavaScript
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 如果文本字段为空,则使用JavaScript应用CSS样式
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- angular 1.5应用程序中的导航栏
- 在Web应用程序中使用Highcharts javascript
- angularjs+rails应用程序中未显示模板
- 从html创建一个指令,该指令按类名应用函数
- 绘图应用程序-单击工具更改光标
- 如果所选范围为空,则在光标处应用“选择”
- 铬中的 CKEDITOR 在光标位置添加“?”标记,同时应用任何样式(粗体/斜体)而不选择
- 如果光标位于元素之外,如何应用压缩光标
- 在遍历光标和更新文档时,连接因应用程序错误而关闭
- 在web应用程序中发布/获取期间,使用web上的等待光标
- 谷歌应用程序脚本::是否有可能获得光标的位置或从谷歌文档中获得选定的文本