javascript - 检查光标是否在内容可编辑 div 的开头

标签 javascript

我想查找光标是否位于内容可编辑 div 的开头。我正在使用 Internet Explorer 11。我有以下 html,并且我编写了一个 javascript 以在光标位于开头时返回 true。但是我的代码总是返回“false”。请帮助我当光标位于 div 的开头时如何返回 true,即在复选框之前。否则它应该返回 false(即使光标在复选框之后)。

<!DOCTYPE>
<HTML>
<HEAD>
<script language="JavaScript">
function getSelectionTextDetail(element) {
    var atStart = false, atEnd = false;
    var selectionRange, temporaryRange;
    var selectedObject;
    if (window.getSelection) {
        selectedObject = window.getSelection();
        if (selectedObject.rangeCount) {
            selectionRange = selectedObject.getRangeAt(0);
            temporaryRange = selectionRange.cloneRange();
            temporaryRange.selectNodeContents(element);
            temporaryRange.setEnd(selectionRange.startContainer, selectionRange.startOffset);
            atStart = (temporaryRange.toString() === "");               
        }
    } 
    alert(atStart);
    //return atStart;
}
</script>
</HEAD>

<BODY>
<div style="border:solid 1px" contenteditable="true" onKeyUp="getSelectionTextDetail(this)">
<span style="font-family: Arial; font-size: 8pt;">
<input name="chk_O258" id="chk_O258" style="width: 12px; height: 12px; padding-top: 0px; padding-bottom: 0px; vertical-align: middle;" type="checkbox" value="on">Cursor Position Test</span></div>
</BODY>
</HTML>

最佳答案

没有在 IE 中测试过,但是试试这个:

<!DOCTYPE>
<HTML>
<HEAD>
<script language="JavaScript">
function getSelectionTextDetail(element) {
var atStart = false, atEnd = false;
var selectionRange, temporaryRange;
var selectedObject;
if (window.getSelection) {
    selectedObject = window.getSelection();

    if (selectedObject.rangeCount) {
        selectionRange = selectedObject.getRangeAt(0);
        temporaryRange = selectionRange.cloneRange();
        temporaryRange.selectNodeContents(element);
        temporaryRange.setEnd(selectionRange.startContainer, selectionRange.startOffset);
        check_string = temporaryRange.toString();
        atStart = (check_string.replace(/^\s+|\s+$/g, '') === "" && selectionRange.startOffset == 1);               
    }
} 
alert(atStart);
//return atStart;
}
</script>
</HEAD>

<BODY>
<div style="border:solid 1px" contenteditable="true" onKeyUp="getSelectionTextDetail(this)">
<span style="font-family: Arial; font-size: 8pt;">
<input name="chk_O258" id="chk_O258" style="width: 12px; height: 12px; padding-top: 0px; padding-bottom: 0px; vertical-align: middle;" type="checkbox" value="on">Cursor Position Test</span></div>
</BODY>
</HTML>

关于javascript - 检查光标是否在内容可编辑 div 的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36765485/

相关文章:

javascript - 强制 Facebook 使用风格

javascript - 如果从右悬停然后动画从右到左和反转

javascript - 将 HTML 环绕在文本周围

javascript - React.js 无法更改复选框状态

javascript - 使用 jquery 在向下一些像素后显示按钮

javascript - Jquery 方法在一处处理所有 ajax 成功事件

javascript - chrome 通知的操作不起作用

javascript - ES6 Promises - 在不使用延迟的情况下,我如何保证最终访问在 React componentDidMount 函数期间实例化的对象?

javascript - 如何在html/css中制作下拉登录菜单

javascript - 如何查询不同节点的置顶帖子?