亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

元素綁定click點擊事件方法

2024-05-06 16:21:47
字體:
來源:轉載
供稿:網友

當點擊元素時,會發生 click 事件。當鼠標指針停留在元素上方,然后按下并松開鼠標左鍵時,就會發生一次 click。click() 方法觸發 click 事件,或規定當發生 click 事件時運行的函數。

最簡單的莫過于使用click方法:

 

 
  1. <input id="btn" type="button" value="BUTTON" onclick="alert(1)"/> 
  2. <script> 
  3. var btn = document.getElementById('btn'); 
  4. btn.click(); 
  5. </script> 

所有瀏覽器都彈出了1。但是如果把input換成div呢?

 

 
  1. <div id="d1" style="background:gold;width:50px;height:50px;" onclick="alert(2)"></div> 
  2. <script> 
  3. var d1 = document.getElementById('d1'); 
  4. d1.click(); 
  5. </script> 

這次Safari/Chrome中沒有彈出2。即不是所有瀏覽器中的所有元素都支持click方法。事實上只有input/button元素在所有瀏覽器才具有click方法。

以上的事件都是直接添加在html屬性中的(內聯事件)。click方法能觸發使用el.onXXX/addEventListener/attachEvent添加的事件嗎?

 

 
  1. <input id="btn1" type="button" value="BUTTON 1"/> 
  2. <input id="btn2" type="button" value="BUTTON 2"/> 
  3. <script> 
  4. var addListener = window.addEventListener ? 
  5. function(el, type, fn) { el.addEventListener(type, fn, false); } : 
  6. function(el, type, fn) { el.attachEvent('on' + type, fn); }; 
  7. var btn1 = document.getElementById('btn1'); 
  8. var btn2 = document.getElementById('btn2'); 
  9. btn1.onclick = function(){ 
  10. alert(3); 
  11. }; 
  12. addListener(btn2, 'click'function() {alert(4)}); 
  13. btn1.click(); 
  14. btn2.click(); 
  15. </script> 

所有瀏覽器都依次彈出了3,4。說明支持click方法的元素,無論使用內聯方式還是el.onXX又或addEventListener/attachEvent添加事件都能觸發。

click方法已經寫入了HTML5草案,如果Safari/Chrome完成對剩下的元素的實現(非input/button)。那么模擬點擊將十分簡單,直接調用click方法。Firefox也是剛剛在版本5中實現對非input/button元素的click方法實現,這點Safari/Chrome有些落后了。

既然Safari/Chrome中click不可用, 我們就用dispatchEvent來實現了。

 

 
  1. <input id="btn1" type="button" value="BUTTON 1" onclick="alert(1)"/> 
  2. <input id="btn2" type="button" value="BUTTON 2" onclick="alert(2)"/> 
  3. <div id="d1" style="background:gold;width:50px;height:50px;" onclick="alert(3)"></div> 
  4. <script> 
  5. function dispatch(el, type){ 
  6. try
  7. var evt = document.createEvent('Event'); 
  8. evt.initEvent(type,true,true); 
  9. el.dispatchEvent(evt); 
  10. }catch(e){alert(e)}; 
  11. var btn1 = document.getElementById('btn1'); 
  12. var btn2 = document.getElementById('btn2');  
  13. var d1 = document.getElementById('d1'); 
  14. dispatch(btn1, 'click'); 
  15. dispatch(btn2, 'click'); 
  16. dispatch(d1, 'click'); 
  17. </script> 

依次彈出了1,2,3。換成其它事件添加方式亦可觸發。IE中還有個fireEvent去主動觸發事件,當然如果是點擊事件使用click更好。非點擊事件則只能通過fireEvent去觸發了。

最后給出我的triggerClick方法,實現方式判斷瀏覽器,判斷nodeName。依據是Safari/Chrome不支持非input/button元素的click方法。

 

 
  1. function triggerClick( el ) { 
  2. var nodeName = el.nodeName, 
  3. safari_chrome = /webkit/.test(navigator.userAgent.toLowerCase()); 
  4. if(safari_chrome && (nodeName != 'INPUT' || nodeName != 'BUTTON')) { 
  5. try
  6. var evt = document.createEvent('Event'); 
  7. evt.initEvent('click',true,true); 
  8. el.dispatchEvent(evt); 
  9. }catch(e){alert(e)}; 
  10. }else
  11. el.click(); 

上面的實現方式讓你能明白瀏覽器的差異,但實現其實有點羅嗦。直接判斷元素是否具有click方法即可,Safari/Chrome中非input/button元素沒有click方法,返回undefined。

 

 
  1. function triggerClick( el ) { 
  2. if(el.click) { 
  3. el.click(); 
  4. }else
  5. try
  6. var evt = document.createEvent('Event'); 
  7. evt.initEvent('click',true,true); 
  8. el.dispatchEvent(evt); 
  9. }catch(e){alert(e)};  

特性判斷也比瀏覽器判斷有更好的前瞻性,比如Safari/Chrome在后續版本中實現了非input/button元素的click方法,那么特性判斷的函數仍然可以向下兼容。

以上所述就是本文的全部內容了,希望大家能夠喜歡

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲午夜未满十八勿入免费观看全集| 色综合久久88| 久久久久久高潮国产精品视| 成人欧美一区二区三区在线湿哒哒| 日韩美女av在线免费观看| 精品人伦一区二区三区蜜桃网站| 欧美xxxx14xxxxx性爽| 国产亚洲视频在线| 97精品久久久| 97国产真实伦对白精彩视频8| 久久精品视频在线观看| 日韩在线视频观看| 91香蕉嫩草神马影院在线观看| 亚洲精品欧美极品| 久久久国产在线视频| 国产精品成人va在线观看| 北条麻妃久久精品| 中文字幕亚洲激情| 92看片淫黄大片欧美看国产片| 精品国产一区二区三区久久狼黑人| 亚洲综合在线中文字幕| 欧美在线观看日本一区| 2021国产精品视频| 成人国产精品一区二区| 成人黄色大片在线免费观看| 日韩av一区二区在线| 日日狠狠久久偷偷四色综合免费| 伊人伊成久久人综合网小说| 2019中文字幕全在线观看| 久久精品国产免费观看| 亚洲最新av网址| 日韩精品在线观看网站| 精品日本高清在线播放| 91人成网站www| 欧美激情视频播放| 亚洲男女性事视频| 久久久久中文字幕2018| 91在线观看免费| 丝袜美腿亚洲一区二区| 97精品国产97久久久久久免费| 91成品人片a无限观看| 久久久亚洲精品视频| 国产在线精品成人一区二区三区| 亚洲自拍欧美另类| 精品国偷自产在线视频99| 国产精品盗摄久久久| 久久激情五月丁香伊人| 欧美一级视频一区二区| 日韩在线视频免费观看| 91在线播放国产| 日本精品视频在线观看| 91日本视频在线| 日韩电影中文字幕| 成人天堂噜噜噜| 久久精品中文字幕电影| 国产精品香蕉在线观看| 国产精品视频成人| xvideos国产精品| 欧美日韩国产在线看| 51午夜精品视频| 日本精品视频在线观看| 成人h片在线播放免费网站| 欧美日韩国产丝袜美女| 欧美激情精品久久久久久大尺度| 1769国产精品| 成人天堂噜噜噜| 欧美放荡办公室videos4k| 欧美二区在线播放| 亚洲欧美国产高清va在线播| 亚洲国产小视频在线观看| 日韩在线视频播放| 亚洲国产精品成人一区二区| 亚洲国产精品久久久久秋霞不卡| 国产福利成人在线| 欧美大片免费观看| 精品一区二区三区四区| 亚洲激情在线观看视频免费| 不卡av电影在线观看| 欧美自拍大量在线观看| 疯狂欧美牲乱大交777| 久久久久中文字幕2018| 在线观看免费高清视频97| 欧美激情欧美狂野欧美精品| 久久久久久国产精品三级玉女聊斋| 欧美亚洲另类视频| 日本免费一区二区三区视频观看| 一区二区欧美在线| 亚洲最大福利视频| 欧美精品亚州精品| 亚洲毛茸茸少妇高潮呻吟| 中文字幕日韩在线视频| 精品自在线视频| 国产精品美女免费看| 久久久久久久久电影| 中文字幕一区日韩电影| 国产精品日韩av| 麻豆成人在线看| 国产精品69久久| 97国产精品视频人人做人人爱| 国产精品中文字幕久久久| 欧美成人精品h版在线观看| 久久久97精品| 国产精品免费在线免费| 欧美日韩综合视频| 久久精品99国产精品酒店日本| 亚洲最大av网站| 日韩精品视频在线观看免费| 成人免费福利在线| 国产欧美精品日韩精品| 97视频在线观看免费高清完整版在线观看| 亚洲高清久久久久久| 国产在线拍揄自揄视频不卡99| 久久久久久久色| 欧美国产乱视频| 久久精品欧美视频| 亚洲综合在线中文字幕| www国产精品视频| 高清亚洲成在人网站天堂| 国产精品小说在线| 第一福利永久视频精品| 亚洲精品美女在线观看| 国产精品日日摸夜夜添夜夜av| 亚洲自拍偷拍一区| 色老头一区二区三区在线观看| 国内精品久久久久久中文字幕| 国产精品专区一| 国内精品伊人久久| 亚洲精美色品网站| 国自在线精品视频| 5566日本婷婷色中文字幕97| 日韩天堂在线视频| 亚洲va欧美va在线观看| 国产日韩欧美一二三区| 夜夜狂射影院欧美极品| 亚洲日本aⅴ片在线观看香蕉| 国产精品爽黄69| 最近2019年好看中文字幕视频| 欧美日韩国产精品一区二区不卡中文| 在线视频欧美日韩精品| 91久久精品国产91久久| 性色av一区二区咪爱| 亚洲欧美另类中文字幕| 国产精品久久久久久婷婷天堂| 成人午夜一级二级三级| 国产精品日韩精品| 亚洲精品资源在线| 欧美成人午夜激情视频| 亚洲激情在线观看视频免费| 国产日本欧美视频| 国产精品精品一区二区三区午夜版| 欧美天天综合色影久久精品| 欧美成人免费小视频| 亚洲国产精品久久| 蜜臀久久99精品久久久久久宅男| 欧美激情一级精品国产| 午夜精品一区二区三区在线视频| 国产成人精品午夜| 亚洲一区二区久久久久久| 91精品国产91久久久| 成人久久18免费网站图片| 午夜精品一区二区三区视频免费看| 欧美久久精品午夜青青大伊人| 久久国产精品偷| 日本中文字幕不卡免费|