Javascript 查看ContentEditable div是否具有焦点

Javascript 查看ContentEditable div是否具有焦点,javascript,jquery,css,html,contenteditable,Javascript,Jquery,Css,Html,Contenteditable,我试图检查contenteditable div是否有焦点,但遇到了一些问题。以下是我目前的代码: if ($("#journal-content:focus")) { alert("Has Focus"); } else { alert("Doesn't Have Focus"); } 问题是,它总是返回“有焦点”,即使它没有。做这件事最好的方法是什么 更新:这样做是为了在插入新元素之前查看光标是否位于所需位置。否则,如果用户最后单击的位置是在标题中,那么当我用Rangy恢复

我试图检查contenteditable div是否有焦点,但遇到了一些问题。以下是我目前的代码:

if ($("#journal-content:focus")) {
    alert("Has Focus");
} else {
    alert("Doesn't Have Focus");
}
问题是,它总是返回“有焦点”,即使它没有。做这件事最好的方法是什么

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

更新2:这里有一个JSFIDLE说明了我的问题:

试试:

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

在执行脚本之前,检查内容是否可编辑

或:

你可以试试这个

if ($("#journal-content").is(":focus")) {
...
也许如果你能告诉我们你想要实现什么,我们会有更多的帮助。 同时,您可以在这里阅读:。

这个怎么样

if (document.activeElement.isContentEditable) {
...
}

我不知道浏览器对此的支持有多好,但至少Chrome和Firefox支持它。

对于纯JavaScript,当您有多个contenteditable元素时:

选中
document.activeElement.id
document.activeElement.isContentEditable

示例:
函数是聚焦的(){
if(document.activeElement.id==“日记账内容”){
警惕(“专注!”);
}否则{
警惕(“未聚焦:(”);
}
}
#期刊内容{
背景色:#eee;
}
#不是期刊内容{
背景色:#ccc;
}
期刊内容

不是日志内容
…但它确实如此。之后我使用Rangy保存选择,效果很好。问题是,当单击按钮时,元素已经失去焦点。好的,更新了我的原始帖子,解释了我试图做的事情。(我尝试了你的,但似乎不起作用)。如果您遵循我发布的链接,您将看到以下内容:如果您正在查找当前关注的元素,$(document.activeElement)将在不必搜索整个DOM树的情况下检索它。请在或下查看我的更新:您找到解决方案了吗?我已使用下面@iambriansreed的答案更新了小提琴,使其正常工作。对我来说,这是最可靠的答案,谢谢。大多数其他答案都不起作用
if ($("#journal-content").is(":focus")) {
...
if (document.activeElement.isContentEditable) {
...
}