以下功能将在所有主流浏览器中实现:
function placeCaretAtEnd(el) { el.focus(); if (typeof window.getSelection != "undefined" && typeof document.createRange != "undefined") { var range = document.createRange(); range.selectNodeContents(el); range.collapse(false); var sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); } else if (typeof document.body.createTextRange != "undefined") { var textRange = document.body.createTextRange(); textRange.moveToElementText(el); textRange.collapse(false); textRange.select(); }}placeCaretAtEnd( document.querySelector('p') );p{ padding:.5em; border:1px solid black; }<p contentEditable>foo bar </p>
在开始时将插入符几乎相同:只需要更改传递给的调用中的布尔值即可
collapse()。这是一个示例,该示例创建用于将插入号放在开头和结尾的函数:
function createCaretPlacer(atStart) { return function(el) { el.focus(); if (typeof window.getSelection != "undefined" && typeof document.createRange != "undefined") { var range = document.createRange(); range.selectNodeContents(el); range.collapse(atStart); var sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); } else if (typeof document.body.createTextRange != "undefined") { var textRange = document.body.createTextRange(); textRange.moveToElementText(el); textRange.collapse(atStart); textRange.select(); } };}var placeCaretAtStart = createCaretPlacer(true);var placeCaretAtEnd = createCaretPlacer(false);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)