JavaScript FAQ(十五)——鼠标事件(二)

 十二、鼠标事件

 

2. 左键 vs.右键(Left vs. Right Button

Q:我如何检查用户点击的是右键还是左键?

A:click事件只在左键发生,因此onClick事件处理器不用进行左右键测试。

另一方面,mousedown和mouseup事件可能发生在鼠标的任何键上。要确定用户点击的是左键还是右键,可以使用下列事件属性:

  • Netscape Navigator中 event.which
  • Internet Explorer中 event.button

若这些属性的值是1,事件就发生在左键上。在下面的例子中,onMouseEvent事件处理器会根据你实际点击的鼠标显示Left button或者Right button。这个消息会出现在你的浏览器的状态栏上。点击或者右击页面的任何地方来观察它如何运行:

<script language="JavaScript"><!--
function mouseDown(e) {
 if (parseInt(navigator.appVersion)>3) {
  var clickType=1;
  if (navigator.appName=="Netscape") clickType=e.which;
  else clickType=event.button;
  if (clickType==1) self.status='Left button!';
  if (clickType!=1) self.status='Right button!';
 }
 return true;
}
if (parseInt(navigator.appVersion)>3) {
 document.onmousedown = mouseDown;
 if (navigator.appName=="Netscape")
  document.captureEvents(Event.MOUSEDOWN);
}
// --></script>

 

3. 右键:不可用(Right Button: Disabling

Q:我可以在用哦过户点击右键时不弹出Windows上下文菜单吗?

A:在当今的多数浏览器中,你可以通过在页面的body标签中使用oncontextmenu时间处理器,阻止弹出上下文菜单。

<body oncontextmenu="return false;">

试着在页面上任何地方右击——上下文菜单都不会出现了。

在旧版的浏览器中(从Netscape Navigator 4.x和Internet Explorer 4.x开始你可以通过在右击时显示警告信息禁止右键菜单。把下面的代码插入页面的<HEAD>区域就可以完成上面的功能:

<script language="JavaScript"><!--
function mouseDown(e) {
 if (parseInt(navigator.appVersion)>3) {
  var clickType=1;
  if (navigator.appName=="Netscape") clickType=e.which;
  else clickType=event.button;
  if (clickType!=1) {
   alert ('Right mouse button is disabled.')
   return false;
  }
 }
 return true;
}
if (parseInt(navigator.appVersion)>3) {
 document.onmousedown = mouseDown;
 if (navigator.appName=="Netscape")
  document.captureEvents(Event.MOUSEDOWN);
}
// --></script>

 

注意:在特别老的浏览器中(Netscape Navigator 3.x、Internet Explorer 3.x或者更早)上下文菜单仍旧会出现。另外,如果用户已经禁止了JavaScript,上下文菜单也会出现。

 

 

4. 图片上禁止右键菜单(Disabling the Right-Click Menu For an Image

Q:我可以只在一个图片上禁止右键菜单,而其他图片仍然显示吗?

A:可以。在当今多数的浏览其中,你可以在一个特定的图片上禁止右键菜单。为了实现这个功能,你可以在IMG标签内使用事件处理器oncontextmenu="return false;",图片定义:

<IMG border=0 src="..." oncontextmenu="return false;">

例如,这个图片的右键菜单已经被禁止了:

 

注意:在旧版的浏览器中(例如,Internet Explorer 4.x或者更早),这个技巧就不起作用。如果用户禁止了JavaScript,菜单也会出现。

时间: 2024-09-22 19:08:00

JavaScript FAQ(十五)——鼠标事件(二)的相关文章

selenium-webdriver(python) (十五) 鼠标事件简介

本节重点: ActionChains 类 context_click()  右击 double_click()   双击 drag_and_drop()  拖动 测试的产品中有一个操作是右键点击文件列表会弹出一个快捷菜单,可以方便的选择快捷菜单中的选择对文件进行操作(删除.移动.重命名),之前学习元素的点击非常简单: driver.find_element_by_id("xxx").click() 那么鼠标的双击.右击.拖动等是否也是这样的写法呢?例如右击: driver.find_e

selenium-webdriver(python) (十五) -- 鼠标事件

本节重点: ActionChains 类   context_click()  右击   double_click()   双击   drag_and_drop()  拖动   测试的产品中有一个操作是右键点击文件列表会弹出一个快捷菜单,可以方便的选择快捷菜单中的选择对文件进行操作(删除.移动.重命名),之前学习元素的点击非常简单: driver.find_element_by_id("xxx").click() 那么鼠标的双击.右击.拖动等是否也是这样的写法呢?例如右击: drive

探究JavaScript中的五种事件处理程序方式_javascript技巧

我们知道JavaScript与HTML之间的交互是通过事件实现的.事件最早是在IE3和Netscape Navigator 2中出现的,当时是作为分担服务器运算负载的一种手段. 通俗地理解,事件就是用户或浏览器自身执行的某种操作.而事件处理程序即为响应某个事件的函数.抽出主干,即事件处理程序为函数.  我们又把事件处理程序称为事件侦听器.  事件处理程序是以"on"开头的,因此对于事件on的时间处理程序即为onclick.时间处理程序在JavaScript中大致有五种,下面会根据这五种

JavaScript FAQ(五)——数字

 三.数字   1. 常量(Constants) Q:在编写JavaScript代码时,我可以使用什么类型的数字? A:在JavaScript中,你可以使用下列形式的数字: 常规十进制数字: 5 137 1.3 指数形式的十进制数字: 6.67e-11  -1.127e20 八进制数,例如:  01234  -077  0312 八进制的正数需以0开头,而负数应以-0开头. 十六进制数,例如: 0xFF  -0xCCFF  0xabcdef 十进制的正数需以0x开头,而负数应以-0x开头. 2.

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

 十二.鼠标事件   5. Ctrl.Alt.Shift键(Ctrl, Alt, Shift Keys) Q:我如何检测和按下Ctrl.Alt和Shift键一起的鼠标事件? A:在当今的浏览器中,脚本可以检测鼠标事件发生时,用户是否按下了Ctrl.Alt或者Shift键中任何一个.在下面的例子中,由MouseDown和MouseUp事件完成演示.而至于其它鼠标事件,类似的方法可能达到效果,也可能达不到效果,这依赖于浏览器. 要实现Ctrl/Alt/Shift检测,你可以使用属性event.ctr

JavaScript FAQ(十四)——鼠标事件(一)

十二. 鼠标事件   1. 鼠标事件属性(Mouse Event Properties) Q:哪些事件属性我可以用来分析鼠标事件?A:Netscape Navigator 4和Internet Explorer 4(以及较新版本)支持相当少的事件属性.其中一些在两个浏览器上是一样的(例如,event.screenX或者event.typ):不过,多数还是平台相关.移动或点击鼠标,下面的文本框会显示你当前浏览器()的所有事件属性:(译者注:由于原文实例不能正确运行,这里只贴出相关的JavaScri

JavaScript FAQ(二十五 完)—— 错误处理

二十二.错误处理   1.禁止JS错误(Suppress JS Errors) Q:我是否可以禁止JavaScript错误信息? A:可以.要禁止页面上所有的JavaScript错误信息,你要把下面一段代码放在页面的HEAD部分: <SCRIPT language="JavaScript"> <!-- function silentErrorHandler() {return true;} window.onerror=silentErrorHandler; //--

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十五)

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十五)完美捕捉精灵之神器 -- HitTest 怪物们都出现了,如何选中自己心仪的怪是主角目前首要做的事. 为了进行鼠标状态区别,我首先对鼠标变化规则进行约束:当鼠标在屏幕上空旷地图区域移动时,鼠标光标形态表现为默认光标 (0号光标图片),当鼠标经过精灵(悬停于其上方)时则变成发光光标(1号光标图片),如果指向的精灵对象为敌对状态时则鼠标光标变为攻击光标(2号光标图片),当使用魔法快捷键时,鼠标光标变成凝法状

赶紧接着上一节:Silverlight+WCF 新手实例 象棋 主界面-实时聊天区(二十五) 这节我们实现上节没实现的纠结的进出房间的消息提示 我们清楚的知道,我们每个区都是一个用户控件,我们的在线用户进出时,得到聊天区域显示信息,这就涉及到用户控件之间的消息传递了。 在线用户区说:反正我是

赶紧接着上一节:Silverlight+WCF 新手实例 象棋 主界面-实时聊天区(二十五)  这节我们实现上节没实现的纠结的进出房间的消息提示 我们清楚的知道,我们每个区都是一个用户控件,我们的在线用户进出时,得到聊天区域显示信息,这就涉及到用户控件之间的消息传递了. 在线用户区说:反正我是没权直接去实时聊天区写东西,没办法,找中介委托设置一下了. 那谁是中介呢?委托谁呢?当然是衣食父母Index.xaml了,是它撑着整个家庭的. 好了,知道中介了,那我就签个委托书了: 回到OnlineUse