javascript - 查看 ContentEditable div 是否有焦点

标签 javascript jquery css html contenteditable

我正在尝试检查一个 contenteditable div 是否有焦点,但我遇到了一些麻烦。到目前为止,这是我的代码:

if ($("#journal-content:focus")) {
    alert("Has Focus");
} else {
    alert("Doesn't Have Focus");
}

问题是,它总是返回“有焦点”,即使它没有。执行此操作的最佳方法是什么?

更新:这样做的原因是在插入新元素之前查看光标是否位于所需位置。否则,如果用户点击的最后一个地方是在标题中,那么当我用 Rangy 恢复选择并用新元素替换它时,它最终会出现在标题中。我需要一种方法来确定 contenteditable div 是否获得焦点/其中是否有光标,所以如果没有,我将简单地在末尾附加我要插入的元素。

更新 2:这是一个 JSFiddle 说明我的问题:http://jsfiddle.net/2NHrM/

最佳答案

尝试:

if ($("#journal-content").is(":focus")) {
    alert("Has Focus");
} else {
    alert("Doesn't Have Focus");
}

或者:

window.contenteditable_focused = false;

$("#journal-content").focus(function() {
    //alert("Has Focus");
    contenteditable_focused = true;
});
$("#journal-content").blur(function() {
    //alert("Doesn't Have Focus");        
    contenteditable_focused = false;
});

在执行脚本之前检查 contenteditable_focused

或者:

if ($( document.activeElement ).is("#journal-content")) {
    alert("Has Focus");
} else {
    alert("Doesn't Have Focus");
}

关于javascript - 查看 ContentEditable div 是否有焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9936268/

相关文章:

javascript - 将先前保存的 Canvas getImageData 添加到其他图像之上

javascript - 如果必填字段为空,则不要打开弹出窗口

ios - -webkit-溢出-滚动 : touch is not recognized in chrome and on ios

javascript - slider 导航 - 下一个 上一个

javascript - 强制桌面浏览器打开移动网站

javascript - 如何使用 jQuery 将变量发布到 PHP?

html - 更改单个列表项的颜色

javascript - 在 javascript 中写入数百万行 csv 的最佳方法

javascript - asp.net mvc 6 web api + Angular 资源帖子数组作为对象属性

javascript - 由于固定的枢轴和移动点,如何倾斜值?