2010-11-24 7 views
0

私はいくつかの興味深いjavascriptの元に戻すマネージャーを見つけました。私たちは最終的にHTML5でブラウザーに実装されるものを持っています。イベントバインディングを元に戻す/やり直す

  • はCtrl + Zは、Ctrl + Shiftキー+ Z
  • :UndoManagerを駆動するためにjQueryを使って '元に戻す' トリガするもので、ユーザーのアクションをキャプチャする方法ですについて私はよく分からないものを今

    編集>元に戻す編集ではCmd + Z、CMD + Shiftキー+ Z

  • ユーザがクリック>自分のブラウザに

私をメニューをやり直しますこれで最初の刺し傷は、このようになります:

function keypress(e){ 
    if (e.metaKey) { 
    Collage.console(e); 
    switch(e.keyCode){ 
    case 122: // Mac 
     if (e.shiftKey) { 
     undoManager.redo(e); 
     } else { 
     undoManager.undo(e); 
     } 
    case 26: // PC 
     if (e.shiftKey) { 
     undoManager.redo(e); 
     } else { 
     undoManager.undo(e); 
     } 
    } 
    } 
}; 

$('#my-thing-with-undos').bind('keypress', keypress); 

が、どのように私は(現代の)ブラウザの[編集]メニューのプログラムをアップし続けていることを確認していますか?

ブラウザは、その領域で何をどのように元に戻すか、少なくとも編集を実行しないようにしたい(実際はcontenteditable = true地域です)。心の中で、これまでのキーストローク特定の時間のを保存するためにarrayを使用

答えて

0

私はあなたがデフォルトのブラウザのイベントをトリガすることができないと思います...

。例えば

「hello world」と入力すると2番目に表示されます。または、引き続き入力を続けても文字を記録し続けるとします。ユーザーが1秒以上入力をやめると、それを配列にプッシュして、変更のコントロールが増えます。

もう1つは悪い気分です。しかし、26と122がctrl + zのために立っていないことを確かめてください。

+0

2行目のif(e.metaKey)は、ControlまたはCommandが確実に停止していることを確認する必要があります。 – ilpoldo

+0

ブラウザのデフォルトの動作をどこかでブロックしない限り、これは動作しません。 – podperson