編集中に GreaseMonkey のホットキーを無効にするにはどうすればよいですか?
-
09-06-2019 - |
質問
使っています Ctrl+左 / Ctrl+右 GreaseMonkey スクリプト内で、ページを戻したり進めたりするためのホットキーとして使用します。問題なく動作しているように見えますが、テキスト編集領域にいる場合はこの動作を無効にしたいと考えています。document.activeElement を使用してページのアクティブ要素を取得し、それが編集可能領域であるかどうかをテストしようとしていますが、常に「未定義」が返されます。
解決
document.activeElement は FF3 で機能しますが、次のものも機能します
(function() {
var myActiveElement;
document.onkeypress = function(event) {
if ((myActiveElement || document.activeElement || {}).tagName != 'INPUT')
// do your magic
};
if (!document.activeElement) {
var elements = document.getElementsByTagName('input');
for(var i=0; i<elements.length; i++) {
elements[i].addEventListener('focus',function() {
myActiveElement = this;
},false);
elements[i].addEventListener('blur',function() {
myActiveElement = null;
},false);
}
}
})();
他のヒント
element.activeElement は HTML5 仕様の一部ですが、ほとんどのブラウザーではサポートされていません。IEで初めて導入されました。
所属していません StackOverflow