0

我不太确定自己做错了什么,我查找了一种方法来查看元素是否具有焦点。我找到了 document.hasFocus() 方法。所以我尝试并在 Chrome 上调试并得到“未捕获的类型错误:对象 # 没有方法 'hasFocus'。”。这是我的 JavaScript:

var e = document.getElementById("editor").contentWindow;
e.document.designMode="on";
e.document.open();
e.document.write("<head><style>body{font-family:arial,helvetica,sans-serif;font-size:12px;}</style></head>");
e.document.close();
function def() {
   document.getElementById("fonts").selectedIndex = 0;
   document.getElementById("size").selectedIndex = 1;
   document.getElementById("color").selectedIndex = 0;
}
function edit(x, y) {
   e.document.execCommand(x, false, y);
   e.focus();
}
setInterval(function() {
    if (document.getElementById("editor").contentWindow.hasFocus()) {
        document.getElementById("html").value = document.getElementById("editor").contentWindow.document.body.innerHTML;
    }
    else if (document.getElementById("html").hasFocus()) {
        document.getElementById("editor").contentWindow.document.body.innerHTML = document.getElementById("html").value;
    }
}, 100);
4

2 回答 2

1

“hasFocus”方法仅存在于文档对象上,而不存在于单个节点上。请参阅 - https://developer.mozilla.org/en-US/docs/DOM/document.hasFocus

如果要检查输入是否聚焦,可以通过在输入的“onfocus”事件上更新变量来实现,然后检查聚焦元素的变量。请参阅 -在 Javascript 中查找复选框是否已聚焦

于 2012-10-04T20:38:57.480 回答
0

请改用 document.activeElement。它是 HTML5 规范的一部分,并受到最新的 Chrome、Opera、Firefox 和 IE 的支持。

您也可以将此脚本用于不支持它的浏览器。 http://ajaxandxml.blogspot.com/2007/11/emulating-activeelement-property-with.html

于 2012-10-04T20:35:27.147 回答