当前位置:编程学习 > JS >>

关于javascript事件处理程序方式问题

<html><head><title>Untitled Document</title><script  language="javascript"><!--  function hideContextmenu() {  return false;   } document.oncontextmenu = hideContextmenu;//--></script></head><body></body></html> 这段代码中 document.oncontextmenu = hideContextmenu;为什么不能写成document.oncontextmenu = hideContextmenu(); 如果写成这样 浏览器执行结果就没有 屏蔽右键菜单效果,IE6提示那样写出错 而 <body oncontextmenu="hideContextmenu()“”>这里却可以写成hideContextmenu(); 请教下为什么 javascript事件处理程序的方式:让事件属性值等于该事件函数名或程序代码,这样的文字解释可上面的第一个代码却是document.oncontextmenu = hideContextmenu;而给标签增加事件属性时,却是hideContextmenu()两个方式的文字解释都是 事件属性值等于该事件函数名或程序代码
答案:你的理解不对
document.oncontextmenu = hideContextmenu();
是指将函数hideContextmenu执行以后,结果返回给document.oncontextmenu事件。
在你上面的代码里,就相当于写document.oncontextmenu = false;
document.oncontextmenu = hideContextmenu;
是指将函数赋给oncontextmenu事件,在执行此事件时调用hideContextment函数。
写在body的属性里,是将此函数注册给此元素的对应事件
其他:一种叫调用: 如  <body oncontextmenu="hideContextmenu()“”>
一种叫引用: 若 document.oncontextmenu = hideContextmenu;

调用是带有括号的,也只能写在有形的网页元素上面,如你说的 body,标签,没次调用就会执行一次函数;
而再脚本里面,是根本无法实行调用的,因为脚本不存在于网页的任何地方,不能用鼠标点击而触发某种事件,但是你可以用引用的方式,结合DOM技术获得网页中的某个元素,然后对该元素的一些属性或方法重新赋值。如果你写成调用的方法,那就永远都不会生效,有些浏览器还会报错呢

你上文的问题我没有很详细的看,但大概知道你要说什么,然后就即兴回复你了,希望能对你有所帮助 

上一个:为什么我的电脑用vs2008编写的javascript代码无法执行,用记事本编写也不可以,显示的是一片空白,
下一个:javascript播放声音的函数是什么?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,