万年历 购物 网址 日历 小说 | 三峰软件 天天财富 小游戏 视频推荐 小游戏
TxT小说阅读器
↓小说语音阅读,小说下载↓
一键清除系统垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放,产品展示↓
首页  日历2024  日历2025  日历2026  日历知识  | 每日头条  视频推荐  数码知识 两性话题 情感天地 心理咨询 旅游天地 | 明星娱乐 电视剧  职场天地  体育  娱乐 
日历软件  煮酒论史  历史 中国历史 世界历史 春秋战国 三国 唐朝 宋朝 明朝 清朝 哲学 厚黑学 心理学 | 文库大全  文库分类 
电影票房 娱乐圈 娱乐 弱智 火研 中华城市 仙家 六爻 佛门 风水 钓鱼 双色球 戒色 航空母舰 网球 乒乓球 足球 nba 象棋 体操
    
  知识库 -> 数码 -> 请问onmouseover为啥不是驼峰onMouseOver,是可以节省内存吗? -> 正文阅读

[数码]请问onmouseover为啥不是驼峰onMouseOver,是可以节省内存吗?

[收藏本文] 【下载本文】
请问onmouseover为啥不是驼峰onMouseOver,是可以节省内存吗?
关注问题?写回答
[img_log]
JavaScript
Vue.js
JavaSc?ri?p
请问onmouseover为啥不是驼峰onMouseOver,是可以节省内存吗?
20世纪时,HTML 就是写成驼峰式的 onMouseOver 和 onClick 这样子的。HTML 不区分大小写,并且当时推荐是全大写,onClick 之类的东西一般是推荐使用驼峰式风格。


上古时期的 Netscape JavaScript 文档
当时的 HTML 3.2 代码大概是下面这样子的:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Title</TITLE>
<SCRIPT LANGUAGE=JavaScript>
    function helloWorld() {
        window.alert("Hello World");
    }
</SCRIPT>
</HEAD>
<BODY>
<H1>My First Heading</H1>
<P>My first paragraph.</P>
<INPUT TYPE=button VALUE="My button" onClick="helloWorld()">
</BODY>
</HTML>

1997年,万维网联盟(W3C)发布 HTML 4.0 。1999年,万维网联盟(W3C)几乎同时发布 HTML 4.01 与 XHTML 1.0 。XHTML 就是对 HTML 进行微调,使其严格符合 XML 标准。
XHTML 规定有很多,比如一切标签必须有结尾标签(所以禁止写<br>而要写<br />),属性值必须打双引号,还规定了所有标签和属性全都必须使用小写(否则算错误)。上述代码改写成 XHTML 1.0 就是这个样子:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Title</title>
<script type="text/javascript">
    // <![CDATA[
    function helloWorld() {
        window.alert("Hello World");
    }
    // ]]>
</script>
</head>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>

<div><input type="button" value="My button" onclick="helloWorld()" /></div>
</body>
</html>

于是 onclick 和 onmouseover 等等都变成了全小写。
XHTML 非常非常严格,只要有一点点小错误,就会导致整个网页报错,无法显示。比如把上面 input 标签的斜杠删掉,就会导致整个网页崩溃报错。


XHTML 1.0 网页崩溃报错
当然,由于 XHTML 过于严苛,浏览器动不动就报错,所以大多数开发者并不买账。很多开发者即使开启了 XHTML 开发模式,最终为了避免浏览器报错,也还是向浏览器发送 HTML 的响应头(即 Content-type: text/html),而不是 XHTML 的响应头(即 Content-type: application/xhtml+xml)。
2000年,万维网联盟(W3C)几乎同时发布 HTML 4.01修订案与XHTML 1.1 。接下来的十几年,万维网联盟(W3C)一直在坚持修订 XHTML 。然而,由于大多数开发者不买账,XHTML 1.2 流产了。然后,2002年,W3C又去搞XHTML 2.0 ,搞到了2006年,结果也流产了。
2004年,苹果(Apple)、谋智(Mozilla)、Opera三家浏览器开发商联合起来,另立中央,成立了网页超文本应用技术工作小组(WHATWG),开始研发 HTML 5 。
2008年,WHATWG 发布 HTML 5 草案。W3C发现自己已经被架空了,于是放弃 XHTML ,投身 HTML 5 。 2014年,W3C 正式批准通过 HTML 5 。XHTML 就算是彻底死绝了。不过 XHTML 唯一保留下来的遗产,就是全部小写的开发习惯(虽然标准不强制要求)。所以,现在我们看到的,就是全小写的 onclick 和 onmouseover 这样子的风格。
这就是 HTML 5 风格的代码:

<!DOCTYPE html>
<html>
<head>
<title>Title</title>
<script type="text/javascript">
    function helloWorld() {
        window.alert("Hello World");
    }
</script>
</head>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>

<div><input type="button" value="My button" onclick="helloWorld()"></div>
</body>
</html>

送礼物
还没有人送礼物,鼓励一下作者吧
所以你觉的字符串里大写字母有可能比小写字母占用内存更大?很有趣的猜测,但是是不可能的。
Brendan Eich 发明浏览器事件机制是从苹果当年的低代码开发工具 Hypercard 找的灵感,事件处理器的名称用 on 加上一个事件名称的命名方式是继承了 Hypercard 的脚本语言 Hypertalk:


如果你问的是 HTML 里的属性为什么是 onClick 而不是 onclick,那可能是你出生的还不够早,因为在当年,从网景的 JS 文档里到人们真实写的 HTML 里,都是用的驼峰写法(Hypertalk 就是用驼峰的),比如 onClick:


因为 HTML 的标签和属性名是不区分大小写的,当时的网页代码风格是长这样的:


也就是标签和属性名都用大写,事件处理器属性名用驼峰。直到几年后 HTML 4 规范推荐用小写,人们才把慢慢把标签和属性名才改成小写。当我 2006 年刚接触互联网时,还能看到一些用大写的网页,现在很难找到了。
你之所以会觉的 onMouseOver 是不对的,除了现在 HTML 属性名都习惯用小写,还有就是在 JS 里 DOM 对象身上的事件处理器属性 onmouseover,它的确就必须是小写的。
从 js1.1 开始,支持了在 JS 里设置事件处理器,js1.0 只能在 HTML 里设置:

<TAG eventHandler="JavaScript Code">

关于 HTML 里设置的事件处理器字符串怎么被包成一个函数的,可以看 为什么下面的两个getElementById前面一个必须加document.另一个可以不用?
在 js1.1 中,可以用 element.eventhandler = fun 来设置事件处理器,注意 eventHandler 变成了 eventhandler,比如 onClick 变成了 onclick。文档里到处都是驼峰的 event handler,怎么到这里又变成必须全小写了:


我怀疑是有开发者总困惑,所以从 js1.2 开始,网景支持了两种属性名




但可能是 IE 没有支持,所以规范没采纳,反正到现在,只能是用小写的。至于在 js1.1 里,为什么 Brendan Eich 要选择全小写的,那就不知道了,瞎猜也没有意义,我可以去问问 BE。
BE 的回复:没有什么太令人信服的理由,主要就是他个人喜好。


上面的回答正经原因都说的很到位了,但我觉得还有一个好处,是小写字母在OLED屏幕上点亮的像素点少,可以节能(
因为html并不区分大小写,html一般全都是小写。早期在html和js混写的洪荒元年,这些event都是直接写到html属性中的,也是全小写。再加上js本身大小写敏感,早期浏览器兼容性又差,发展到今天,这个书写习惯就一直保留了。
咋滴?大写字母比小写字母多占一个字节?
[收藏本文] 【下载本文】
   数码 最新文章
华为刚刚发布的新机华为畅享 80 搭载了麒麟
如果你手机里第33张照片突然开始攻击你,你
如何看待荣耀 GT Pro 价格 3699 元起?对友
为什么 CCD 相机在数码摄影普及的今天突然「
瑞幸同款饮品不同手机 3 种价格,客服称不同
如何看待英伟达被曝未来将推24GB的 RTX 508
为什么现在键盘鼠标的电池那么小?做大些是
为什么知乎都在劝退计算机国企?
如何看待小米王腾回应被拍拿着iPhone登机?
大学生寒假预计购买新电脑,有没有高性能全
上一篇文章      下一篇文章      查看所有文章
加:2025-04-17 09:36:16  更:2025-04-28 09:38:29 
 
娱乐生活: 电影票房 娱乐圈 娱乐 弱智 火研 中华城市 印度 仙家 六爻 佛门 风水 古钱币交流专用 钓鱼 双色球 航空母舰 网球 乒乓球 中国女排 足球 nba 中超 跑步 象棋 体操 戒色 上海男科 80后
足球: 曼城 利物浦队 托特纳姆热刺 皇家马德里 尤文图斯 罗马 拉齐奥 米兰 里昂 巴黎圣日尔曼 曼联
  网站联系: qq:121756557 email:121756557@qq.com  知识库