2013-03-22 89 views
5

我知道這是不同的瀏覽器之間;例如如果我將函數附加到單選按鈕的onclick和onchange事件上,然後單擊它,Chrome會在onchange上觸發,然後在Firefox上執行相反操作。單擊單擊按鈕時會觸發事件的順序是什麼?

是否有任何資源的人知道,通過瀏覽器打破這個點火順序?

+1

FYI:即使使用jQuery的事件取決於瀏覽器的順序不同。 – 2013-03-22 21:46:40

+0

Afaik無法改變點火順序,但你可以檢查'event.type',並且「重定向」到想要的事件處理程序。 – Teemu 2013-03-22 22:05:50

+0

我並不需要改變順序(因爲這種差異可能會令人討厭) - 我只想知道該期待什麼,並想知道是否有其他人將它映射出來,然後再進行一系列測試。 – 2013-03-22 22:13:46

回答

0

這裏有一個的jsfiddle會告訴你,如果你在每個瀏覽器中運行它:

http://jsfiddle.net/BUkHz/

<label for="myRadio">Radio Button</label><input type="radio" name="myRadio" id="myRadio"/> 
<label for="myRadio">Radio Button 2</label><input type="radio" name="myRadio" id="myRadio2"/> 




var myRadio = document.getElementById('myRadio'); 
    var myRadio2 = document.getElementById('myRadio2'); 

    myRadio.addEventListener('change', interceptRadioEvent); 
    myRadio.addEventListener('click', interceptRadioEvent); 
    myRadio2.addEventListener('change', interceptRadioEvent); 
    myRadio2.addEventListener('click', interceptRadioEvent); 

    function interceptRadioEvent(e){ 
     //do anything else you want to here... 
     radioEventHandler(e); 
    } 

    function radioEventHandler(e){ 
     console.log(e.type); 
    } 

我有一種預感,順序取決於你在做什麼 - 例如,如果您只有一個單選按鈕在第一次點擊它將是:更改,點擊然後再點擊將是'點擊',因爲它響應點擊,但不能取消它。

我希望有幫助。

在Mac上:

鉻: 變化然後單擊

Safari瀏覽器:然後 變化單擊

的iOS(6): 變化然後單擊

+0

我希望別人已經爲我測試了它 - 但是,你說得對,像這樣的東西將完全映射出那些觸發命令。 – 2013-04-02 20:59:31

+0

似乎沒有爲我工作。事件我檢查了你在小提琴上發佈的代碼。 鉻31.0.16版本:更改 - >點擊 Firfox 25.0.1版本:點擊 - >更改 和是忘記提及操作系統是Windows,但我想這應該不是問題 – 2013-11-23 06:07:28

相關問題