永发信息网

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

答案:2  悬赏:30  手机版
解决时间 2021-08-24 18:48

<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()

两个方式的文字解释都是 事件属性值等于该事件函数名或程序代码

最佳答案

hideContextmenu()是函数,hideContextmenu是变量.


document.oncontextmenu = hideContextmenu


表示变量hideContextmenu的值等同于document.oncontextmenu


body oncontextmenu="hideContextmenu()“  表示 当触发 oncontextmenu事件的时候,执行hideContextmenu()函数


看来你基础没学好,给你推荐本书建议阅读一下

全部回答

这其实是约定俗成的程序语法规定要这么做。

在程序语句为了区别两种情况:有的函数在程序运行的过程中就要被执行;有的函数要通过鼠标键盘等事件触发后才被执行,这就用带括号和不带括号的区别。

比如在JS代码中:

document.oncontextmenu = hideContextmenu();就表示程序运行过程中就被执行,不再被事件触发。

而document.oncontextmenu = hideContextmenu;就表示在程序运行过程中不被触发,而等待oncontextmenu事件触发。

至于在<body oncontextmenu="hideContextmenu()">中为什么又可以,这只能说是HTML规定触发一个JS事件应该这么写,注意这里的<body oncontextmenu="hideContextmenu()">是HTML,这个事件不一定就是触发一个JS函数,也可能是VBScript函数。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
谁来帮我开通我的游戏人生?
三国五的密集,我输入后为何没有反应
源汇区漯河马路街投递站地址是什么,有没有知
游戏人生是怎么开通?谁有邀请资格
买液晶电视,是买国产好呢,还是买进口的?
求一个天龙八部2的1888代金卡序列号?
环境保护心得,100到200字,多了就别写了,写
衡南县衡阳衡南县广播电视台我想知道这个在什
如何变的时尚
去抢PBC要做哪些准备?
银行利息怎么记算?
为什么高考总是出现那么多丑事?
鄂城区鄂州古楼街道办事处这个地址在什么地方
QQ宝贝中雇用好友钓鱼后的经验和鱼怎么分配
湘阴县岳阳中国农业银行(湘阴县支行)这个地址
推荐资讯
社会意识包括 A.社会心理 B.社会意识形式 C.
选词填空:sees baadly is old ran fast cook
健身房开业祝福语,健身房过年给会员发送祝福
翻译曾经遗失的美好
咳嗽有痰老不好怎么办,咳嗽,有痰咳不出,怎
广州有哪些海边好玩,广州周边有什么海滩好玩
龙禹冰这个名字有重名吗
雾霾天气形成的原因re
如何锻炼完整(健美)的胸肌?
七雄争霸怎么配将领?骑兵战车机械之类有用没
打开文件夹的时候提示出现Window脚本宿主是什
easy button怎么用 有啥用处
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?