JavaScript FAQ(十六)——滑鼠事件(三)

來源:互聯網
上載者:User

 十二、滑鼠事件

 

5. Ctrl、Alt、Shift鍵(Ctrl, Alt, Shift Keys)

Q:我如何檢測和按下Ctrl、Alt和Shift鍵一起的滑鼠事件。

A:在當今的瀏覽器中,指令碼可以檢測滑鼠事件發生時,使用者是否按下了Ctrl、Alt或者Shift鍵中任何一個。在下面的例子中,由MouseDown和MouseUp事件完成示範。而至於其它滑鼠事件,類似的方法可能達到效果,也可能達不到效果,這依賴於瀏覽器。

要實現Ctrl/Alt/Shift檢測,你可以使用屬性event.ctrlKey、event.altKey、event.shiftKey和不贊成使用的Navigator特有屬性event.modifiers。在該頁任何地方點擊滑鼠,同步選取Ctrl、Alt或者Shift,下面的指令碼(在本頁的<HEAD>地區)就會檢測到這個組合(譯者註:樣本在本頁上可能無法正常運行)。每次點擊滑鼠,你就會在瀏覽器的狀態列上看到event.ctrlKey、event.altKey、event.shiftKey或者event.modifiers。

<script language="JavaScript"><!--function mouseDown(e) { var ctrlPressed=0; var altPressed=0; var shiftPressed=0; if (parseInt(navigator.appVersion)>3) {  var evt = navigator.appName=="Netscape" ? e:event;  if (navigator.appName=="Netscape" && parseInt(navigator.appVersion)==4) {   // NETSCAPE 4 CODE   var mString =(e.modifiers+32).toString(2).substring(3,6);   shiftPressed=(mString.charAt(0)=="1");   ctrlPressed =(mString.charAt(1)=="1");   altPressed  =(mString.charAt(2)=="1");   self.status="modifiers="+e.modifiers+" ("+mString+")"  }  else {   // NEWER BROWSERS [CROSS-PLATFORM]   shiftPressed=evt.shiftKey;   altPressed  =evt.altKey;   ctrlPressed =evt.ctrlKey;   self.status=""    +  "shiftKey="+shiftPressed     +", altKey="  +altPressed     +", ctrlKey=" +ctrlPressed   }  if (shiftPressed || altPressed || ctrlPressed)    alert ("Mouse clicked with the following keys:/n"    + (shiftPressed ? "Shift ":"")    + (altPressed   ? "Alt "  :"")    + (ctrlPressed  ? "Ctrl " :"")   ) } return true;}if (parseInt(navigator.appVersion)>3) { document.onmousedown = mouseDown; if (navigator.appName=="Netscape")   document.captureEvents(Event.MOUSEDOWN);}// --></script>

event.ctrlKey、 event.altKey、 event.shiftKey的意義是一目瞭然的。如果相應的鍵被按下它們的值為 true,反之為 false。Netscape 4屬性 event.modifiers稍微有點技巧。根據實際的鍵組合,這個屬性的值主要有:

Alt only              modifiers=1 (001)Ctrl only             modifiers=2 (010)Ctrl+Alt              modifiers=3 (011)Shift only            modifiers=4 (100)Shift+Alt             modifiers=5 (101)Shift+Ctrl            modifiers=6 (110)Shift+Alt+Ctrl        modifiers=7 (111)None of these keys    modifiers=0 (000)

 

因此,event.modifiers的二進位值表示: 最小(右側)的一位是1表示Alt被按下 第二位是1表示Ctrl被按下 第三位是1表示Shift被按下

 

 6. 禁止Shift-滑鼠點擊(Shift-click: Disabling)

Q:我可以禁止瀏覽器對Shift-滑鼠點擊的預設響應。

A:在Netscape Navigator 4或者Internet Explorer 4或者更新的瀏覽器中,你可以區分Shift-滑鼠點擊和普通的滑鼠點擊,並且禁止對Shift-滑鼠點擊的預設響應。例如,在這個頁面Shift-滑鼠已經被禁止。如果你在Windows中使用版本4(或者更新)的瀏覽器,你可以在任何超連結上進行測試。(在舊版的瀏覽器中,仍然會有預設的響應。)

要禁止Shift-滑鼠點擊,把下面的代碼插入頁面的<HEAD>地區:

 

<script language="JavaScript"><!--function mouseDown(e) { var shiftPressed=0; if (parseInt(navigator.appVersion)>3) {  if (navigator.appName=="Netscape")       shiftPressed=(e.modifiers-0>3);  else shiftPressed=event.shiftKey;  if (shiftPressed) {   alert ('Shift-click is disabled.')   return false;  } } return true;}if (parseInt(navigator.appVersion)>3) { document.onmousedown = mouseDown; if (navigator.appName=="Netscape")   document.captureEvents(Event.MOUSEDOWN);}//--><script>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.