0

何が間違っているのかよくわかりません。要素にフォーカスがあるかどうかを確認する方法を調べました。document.hasFocus() メソッドを見つけました。そこで、Chrome でデバッグしてみたところ、「Uncaught TypeError: Object # has no method '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 に答える