0

スタックオーバーフローは初めてです。しかし、ここで説明したトピックの多くは、Web アプリケーションの開発に非常に役立ちます。

しかし、今回は困惑しています。新しい HTML5 キャンバスを使用するときに元に戻す/やり直し機能を追加するために、JavaScript でいくつかの単純な関数を作成しました。私が書いたコードは Chrome では問題なく動作しますが、Firefox では機能しません。画像オブジェクトを配列に配置しているコード行に問題を切り分けたと思います(Chromeで正常に動作します)。私はこれを調査しましたが、これが FireFox で機能しない理由を見つけることができませんでした。どんな助けでも大歓迎です。

function push()
{
window.cStep++;
    if (window.cStep < window.history.length) { window.history.length = window.cStep; }
var imageData = window.context.getImageData(0, 0, canvas.width, canvas.height);
alert(imageData);
window.history[window.cStep] = imageData;
     document.title = "Step [" +window.cStep + "] Of A Possible [" +    (window.history.length -1) + "]";
 }

 function undo()
 {
  if (window.cStep > 0) {
    window.cStep--;
    window.context.putImageData(window.history[window.cStep], 0, 0);
    document.title = "Step [" +window.cStep + "] Of A Possible [" + (window.history.length -1) + "]";
    if(window.cStep ==0)
    {document.getElementById('middle_centre_canvas').style.opacity = 0.6;}
    else
    {document.getElementById('middle_centre_canvas').style.opacity = 1;}
     }  
   }
    function redo()
   {
    if (window.cStep < window.history.length-1) {
    window.cStep++;
    window.context.putImageData(window.history[window.cStep],0,0);
    document.title = "Step [" +window.cStep + "] Of A Possible [" + (window.history.length -1) + "]";
    if(window.cStep >0)
    {document.getElementById('middle_centre_canvas').style.opacity = 1;}
    }
   }
      function loadyLoader(){
    window.canvas = document.getElementById("canvas");
    window.context = window.canvas.getContext('2d');
    window.history = new Array();
    window.cStep = -1;
    push();
       }
4

1 に答える 1

0

window.history は予約済みのオブジェクトです: http://www.w3schools.com/jsref/obj_history.asp。すべてのwindow.historywindow._history (または別の名前) に置き換えてみてください。

于 2013-03-29T13:22:10.960 に答える