我不太确定我做错了什么,我抬起头来查看一个元素是否有焦点。我找到了document.hasFocus()方法。所以我尝试在Chrome上调试并得到“未捕获的TypeError:对象#没有方法'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);
答案 0 :(得分:1)
方法“hasFocus”仅存在于文档对象上,而不存在于单个节点上。见 - https://developer.mozilla.org/en-US/docs/DOM/document.hasFocus
如果要检查输入是否被聚焦,可以通过更新输入的“onfocus”事件的变量,然后检查聚焦元素的变量。见 - In Javascript find if a checkbox is focused
答案 1 :(得分:0)
请尝试使用document.activeElement。它是HTML5规范的一部分,受最新Chrome,Opera,Firefox和IE支持。
您也可以将此脚本用于不支持它的浏览器。 http://ajaxandxml.blogspot.com/2007/11/emulating-activeelement-property-with.html