Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

再谈大小写问题

  之前 CSS 类名大小写的问题踩了个坑让我十分悲伤,由此展开,想想大小写问题确实很多坑。JavaScript 本身是大小写敏感的,而 HTML 属性是大小写不敏感的。有时候这两者之间自带了映射关系,这时到底是大小写敏感还是不敏感,根本就毫无逻辑可言。

dataset 的坑

  dataset 是将元素上的自定义属性以 DOM 提供的 dataset 集合的方式获取。但 HTML 的元素属性本身是大小写不敏感的,映射到 JavaScript 上会如何呢? <div data-TEXT="UpperCase" data-text="LowerCase" id="x">x</div>
<script>
console.log(x.dataset.text == "UpperCase"); // true
</script>
  于是两个属性被作为相同属性解析,只有第一个生效。

id 的坑

  元素的 id 也可以在 window 对象上产生映射,这时候的大小写敏感吗? <div id="a">a</div>
<div id="A">A</div>
<script>
console.log(a == A); // false
</script>
  CSS 的类名还会因为 DTD 的不同产生差异,而 id 总是大小写敏感的。

VBS 与 JS 之间差异的大坑

  JS 是大小写敏感的语言,而 VBS 是大小写不敏感的语言。但是它们都可以用于 DOM 操作(VBS 是 IE Only 的),于是就会变得很奇怪。 <div id="a">a</div>
<script language="vbscript">
dim a
set a=document.getelementbyid("a")
msgbox a.tagname
</script>
上面代码也可以正常工作 getelementbyid 方法和 tagname 属性全小写对 VBS 而言都是正确的。于是有: <div id="a">a</div>
<script>
a.tagname = 123;
</script>
<script language="vbscript">
dim a
set a=document.getelementbyid("a")
msgbox a.tagname ' 这里输出的是 123,而不是标签名
</script>
  嘛,虽然目前 VBS 用于 Web 这件事已经很少有人提了,这个曾经的大坑现在也很少再有人踩到了。但大小写问题的纠结不会就此完结,以后各种新的 API 还会带来各种大小写的问题。我希望将来的某个时候 HTML 本身也能变成完全大小写敏感的。

网名:
3.84.186.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^