2012-07-23 34 views
1

我有這個JavaScript文件($(「#paper2」)是一個div)jQuery SVG創建折線,Firefox的錯誤?

var lines=0; 

$(document).ready(function() {   
    $("#paper2").svg({ 
     onLoad: function() { 
      svg2 = $("#paper2").svg('get'); 
      root2= svg2.root(); 

      $("#paper2").mousedown(function(ev) { 
       lines++; 
       var polyline = svg2.polyline([[ev.pageX-1-this.offsetLeft , ev.pageY-this.offsetTop-1], [ev.pageX+1-this.offsetLeft , ev.pageY-this.offsetTop+1]], 
        {fill: 'none', stroke: 'black', strokeWidth: 3, 
        id: 'polyline'+lines}) 

       $("#paper2").mousemove(function(ev) { 
        var polyline= $('#polyline' + lines); 
        polyline.attr("points", polyline.attr("points")+ ' ' + (ev.pageX-this.offsetLeft)+','+(ev.pageY-this.offsetTop)); 
       }); 

       $("#paper2").mouseup(function(ev) { 
        var div= $("#paper2"); 
        div.unbind('mousemove'); 
        div.unbind('mouseup'); 
       }) 
      });    
     }, 
     settings: {} 
    }); 

}); 

基本上當我持有的div頂部的鼠標鍵,它開始繪製跟隨鼠標的折線,讓一些基本圖紙。它在Opera和Chrome上運行良好,但在Firefox上,它在我第一次繪製第一條折線時工作正常(釋放鼠標,然後再次按下它),而不是繪製它,就像我在拖動圖像一樣(所有SVG的東西那是在我的div裏面跟着我的鼠標)並且沒有調用鼠標事件。因此,一旦我第二次釋放鼠標按鈕,它就會正常開始繪製多段線,但點擊不會關閉,如果再次單擊鼠標向上的事件,它會再次開始正常工作。這隻發生在我第二次嘗試繪製線條時,第一,第三和其他所有其他正常工作。

任何人都知道我是否做錯了什麼,或者如果這確實是一個Firefox的錯誤,如果有的話,任何人都知道如何做一個解決方法?

回答

1

你在做錯事。您需要在每個事件處理函數中調用ev.preventDefault()。

+0

這樣做的伎倆,非常感謝! – Hoffmann 2012-07-23 13:30:13