我知道這是不同的瀏覽器之間;例如如果我將函數附加到單選按鈕的onclick和onchange事件上,然後單擊它,Chrome會在onchange上觸發,然後在Firefox上執行相反操作。單擊單擊按鈕時會觸發事件的順序是什麼?
是否有任何資源的人知道,通過瀏覽器打破這個點火順序?
我知道這是不同的瀏覽器之間;例如如果我將函數附加到單選按鈕的onclick和onchange事件上,然後單擊它,Chrome會在onchange上觸發,然後在Firefox上執行相反操作。單擊單擊按鈕時會觸發事件的順序是什麼?
是否有任何資源的人知道,通過瀏覽器打破這個點火順序?
這裏有一個的jsfiddle會告訴你,如果你在每個瀏覽器中運行它:
<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): 變化然後單擊
我希望別人已經爲我測試了它 - 但是,你說得對,像這樣的東西將完全映射出那些觸發命令。 – 2013-04-02 20:59:31
似乎沒有爲我工作。事件我檢查了你在小提琴上發佈的代碼。 鉻31.0.16版本:更改 - >點擊 Firfox 25.0.1版本:點擊 - >更改 和是忘記提及操作系統是Windows,但我想這應該不是問題 – 2013-11-23 06:07:28
FYI:即使使用jQuery的事件取決於瀏覽器的順序不同。 – 2013-03-22 21:46:40
Afaik無法改變點火順序,但你可以檢查'event.type',並且「重定向」到想要的事件處理程序。 – Teemu 2013-03-22 22:05:50
我並不需要改變順序(因爲這種差異可能會令人討厭) - 我只想知道該期待什麼,並想知道是否有其他人將它映射出來,然後再進行一系列測試。 – 2013-03-22 22:13:46