3

まず背景:

Mac OS X 10.5.8 上の Firefox 3.6.3 では、標準にテキストを入力するときに、Command+LeftArrow および Command+RightArrow のホットキーの組み合わせにより、カーソルがそれぞれ現在の行の先頭/末尾にジャンプします。ただし、CKEditor、FCKEditor、YUI Editor を使用する場合、Firefox はテキスト領域であることを完全には認識していないようです。代わりに、ブラウザの履歴を前後に移動するホットキーのデフォルト機能に戻ります。これが発生した後、ページに戻ったときにエディター内のテキストもクリアされるため、作業中の内容が簡単に失われます。

イベントをキャプチャし、ページの前後のジャンプが実行されないようにするために使用できるグリースモンキー スクリプトを作成しようとしています。これまでのところ、GreaseMonkey で .user.js スクリプトとして使用されている次のイベントを確認できました。

document.addEventListener('keypress', function (evt) {
// grab the meta key
var isCmd = evt.metaKey;

// check to see if it is pressed
if(isCmd)
{
  // if so, grab the key code;
  var kCode = evt.keyCode;

  if(kCode == 37 || kCode == 39)
  {
    alert(kCode);
  }
}

}、 間違い );

インストール/有効化されている場合、command+left|right 矢印キーを押すと、それぞれのコードを含むアラートが表示されますが、ダイアログ ボックスが閉じられるとすぐに、ブラウザーはページの前後移動を実行します。evt.keyCode = 0 で新しいコードを設定しようとしましたが、うまくいきませんでした。

問題は、この Greasemonkey スクリプトを更新して、ページの前後移動を防止できるかどうかです。

(注: 私は他の解決策にもオープンです。Greasemonkey である必要はありません。それは私が試した方向です。本当の目標は、進む/戻るホットキー機能を無効にできるようにすることです。)

4

1 に答える 1

2

return false;後に追加alert(kCode); ほとんどの場合、それでうまくいくはずです。

以下も追加する必要がある場合があります。

evt.preventDefault();
and/or
evt.stopPropagation();

これら 2 つの機能はほとんどの FF エディションで動作しますが、Mac についてはわかりません。また、通常、関数はエディター スクリプトの後に起動します。ただし、以前に起動すると、そのカーソルジャンプが無効になる可能性があります。

于 2010-05-30T04:45:43.280 に答える