获取当前光标位置周围的单词样式
Getting the style of the word surrounding the current cursor position
我正在尝试在当前光标位置下获取单词的样式/粗体,斜体等。我有点击的x
和y
坐标,我已经完成了以下操作
var range = document.caretRangeFromPoint(x, y);
range.expand('word');
range.queryCommandState('bold');
但这会导致错误,即范围没有queryCommandState
方法,而此读数:http://help.dottoro.com/ljkxwclp.php 意味着范围或至少文本范围(我是 JS 新手,所以请原谅我)有这样的方法。任何帮助将不胜感激。
编辑:我有点通过添加来解决这个问题
var range = document.caretRangeFromPoint(x,y);
range.expand('word');
window.getSelection().addRange(range);
document.queryCommandState('bold');
window.getSelection().empty();
但我对此不是很满意。有没有更好的方法来实现这一目标?
我认为如果不编写大量代码,你无法比你所拥有的做得更好。IE的专有TextRange
具有queryCommandState()
和相关方法,但从未在其他浏览器中进入Range。
如果您对需要销毁选择以进行大胆测试感到不满,那么我同意它看起来不必要地复杂和笨拙,但是将选择恢复到原始状态很简单。此外,基于标准的清空选择方法是removeAllRanges()
而不是 empty()
,这是特定于 WebKit 的。
演示:http://jsfiddle.net/GkWTb/1/
法典:
var range = document.caretRangeFromPoint(x, y);
var sel = window.getSelection();
var selRange;
// Save initial selection
if (sel.rangeCount > 0) {
selRange = sel.getRangeAt(0);
}
range.expand("word");
sel.removeAllRanges();
sel.addRange(range);
alert( document.queryCommandState("bold") );
// Restore original selection
sel.removeAllRanges();
if (selRange) {
selRange = sel.addRange(selRange);
}
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 将样式表插入iframe
- 跟踪在页面加载时应用内联样式的JavaScript
- 如果文本字段为空,则使用JavaScript应用CSS样式
- 当鼠标悬停在文本中的单词上时显示警报
- 匹配一个单词,其中候选人可以跨越顺序组(跨度)
- 使用javascript为单词添加样式
- 使用JavaScript添加单词样式,但避免链接
- struts2 文本区域 仅为一个单词添加样式
- 获取当前光标位置周围的单词样式
- 从句子中设置一个单词的样式
- 值/占位符 - 单词的不同样式
- 更改包含指定单词的元素的样式
- 为段落的第一个单词设置样式
- 有没有“电影演职员表”滚动显示?样式插件的单词列表
- 如何设置带有字母#的单词的样式
- 在mark.js中为单独的单词数组设置样式
- 在输入中以不同的方式设置单词字母的样式,这是可能的
- 如何生成一个JS编辑器/文本区,根据每个单词的长度对其进行样式化
- 在javascript中为特定的单词设置样式