2009-12-17 62 views
2

我試圖讓一個支持雙擊和雙擊的元素。但是,下面的例子在IE,但在Firefox 3.5.6不工作:clearTimeout在FireFox中的ondblclick事件中不起作用

<button onclick="c=setTimeout('alert(1);',1000);" ondblclick="clearTimeout(c);alert(2);">Test</button> 

它只是沒有明確的超時,所以警報(1)被解僱。 有誰知道這是什麼問題? 如何在FireFox中分別單擊和雙擊事件?

回答

3

當你在Firefox中雙擊時,你會得到兩個點擊事件,然後是一個dblclick事件。所以你要設置兩個計時器並清除一個計時器。清除計時器上的click事件應該工作:

<button onclick="clearTimeout(c);c=setTimeout('alert(1);',1000);" ondblclick="clearTimeout(c);alert(2);">Test</button> 
+1

這解決了這個問題。謝謝! :) – Artem 2009-12-17 02:40:40

+2

這隻適用於IE瀏覽器,因爲IE瀏覽器在雙擊的過程中觸發事件。有關詳細信息,請參閱此處:http://webbugtrack.blogspot.com/2008/01/bug-263-beware-of-doubleclick-in-ie.html總之,第二個mousedown和第二次點擊從不開火。 – scunliffe 2009-12-17 04:30:26

0

你真的不應該在你的HTML中內聯你的JavaScript。我建議使用這樣的JavaScript庫,如jQuery。 jQuery將解決您所遇到的跨瀏覽器事件問題!

$(document).ready(function() { 
    var c; 
    $("button").click(function() { 
     c = setTimeout(function() { 
      alert(1); 
     }, 1000); 
    }).dblclick(function() { 
     clearTimeout(c); 
     alert(2); 
    }); 
}); 
+0

這就像在你的代碼。這個例子我只是簡化了它。 – Artem 2009-12-17 02:35:53

0

我不明白這一點。它仍然不起作用。我的意思是,如果您在onclick事件中放置了clerTimeout,則onclick事件將無法正常工作,因爲您在完成之前將其停止了:S 其實我看不出您如何說「這解決了問題」?只是嘗試和複製你寫的代碼,你會發現什麼都沒有發生...:/

+0

Annie提供的代碼示例可能不起作用,但這個想法是絕對正確的,它確實解決了我的問題。 – Artem 2010-01-26 02:15:30