在插入符号位置获取DOM元素
Get DOM element at caret position
我正在寻找一种强大的方法来查找页面上的活动插入符号
- 每个输入和文本区域都有自己单独的插入符号
- 页面上只能有一个插入符号处于"活动"状态,这意味着如果按箭头键,则只有一个插入字符会受到影响
- 活动插入符号不必在元素文档中。activeElement(例如,如果使用
inputDomNode.setSelectionRange
,则先前聚焦的任何元素都保持聚焦)
所以我基本上想知道当你按下箭头键时,如何计算出哪个插入符号会移动。
您可能需要查看选择API和window.getSelection()
。https://developer.mozilla.org/en-US/docs/Web/API/Window.getSelectionhttps://developer.mozilla.org/en-US/docs/Web/API/Selection
在你的例子中,如果你想知道窗口的插入符号当前在哪个(如果有的话)文本区域,这应该可以做到:
var ta, // textarea element
f = window.getSelection ? window.getSelection().focusNode : undefined
if (f) {
// if the textarea is empty, the focusNode ought to be the textarea
if (f.nodeType === 1 && f.tagName === "textarea") {
ta = f;
} else if (f.nodeType === 3 && f.parentNode
&& f.parentNode.tagName === "textarea") {
ta = f.parentNode;
}
} else {
// Selection API is not supported in this browser (< IE9)
// And you will have to use another method to determine the window's
// current selection.
}
请注意,旧版本的IE不支持Selection API。
相关文章:
- 如何在DOM元素上按类型构建此函数
- DOM元素和angular元素之间的主要区别是什么
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- 如何在使用Ractive.extend()时引用DOM元素
- 在d3中向DOM元素添加了图像,但现在它赢得了't过渡
- 如何'剪切'DOM元素并将其显示在其他位置
- 转换<a>使用jQuery将文本字符串转换为dom元素
- d3在数据更新时错误地附加了dom元素
- 访问VueJS中的DOM元素
- 在Meteor中如何查找DOM元素(渲染后)
- IE9-添加和删除DOM元素会破坏父keydown事件
- 未捕获错误:元素缓存中id为x的DOM元素与DOM中的元素不同
- 在 ng-if 编译后访问指令中的 DOM 元素
- spin.js/angular spinner:如何将spin定位到DOM元素中(包括plunker演示)
- 如何在dom元素中插入输入标记数据插件
- Mobile Safari、jQuery以及绑定到未来的DOM元素
- 从字符串创建dom元素时添加多个类
- 如何根据客户端的屏幕大小使用javascript更改DOM元素
- 为onClick-hander插入临时DOM元素