今天看了张鑫旭大佬的新书的有感吧,记录一下。

Web标准未对一些场景做出明确规范,所以各大浏览器厂家只能根据自己的理解和喜好去实现,表现差异不是浏览器的bug,用计算机领域的术语描述为"未定义行为"。

比如一个例子:
CSS中的一个伪类,最常用的一个伪类:active,鼠标按下,执行改伪类对应的CSS样式,鼠标抬起还原。

但是这种情况呢:

<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><style>.active-btn {display: inline-block; background-color: #cd0000;}.active-btn:active {background-color: #ae0000;}</style></head>
<body><a href="javascript:" class="active-btn">按下</a><a href="javascript:" id="button" class="active-btn">按下</a><script>var button = document.getElementById("button");if (button.addEventListener) {button.addEventListener("mousedown", function(event) {// 此处省略N行event.preventDefault();    });}      </script>
</body>
</html>

也就是鼠标按下的时候,阻止按钮的默认行为,这样设置可以让拖动效果更流畅。

但是在Fiewfox浏览器中的:active阵亡了,而IE和Chrome的:active正常变红,符合预期。

原因就是规范上并没有对这种场景的具体描述,所以Firefox认为:active发生在mousedown事件之后。

然后我提了这个问题:

有大佬回答:

转载于:https://www.cnblogs.com/zhangmingzhao/p/8505517.html

CSS中的未定义行为,浏览器的差异(一)相关推荐

  1. java中方法未定义_java - Java SE中的未定义方法错误 - 堆栈内存溢出

    我为该问题写了一个代码http://www.spoj.com/problems/PRIME1/ ,该代码的作用是将输入以字符串形式输入,然后将split()拆分为两个整数,并存储在该数组中.然后返回到 ...

  2. C++中的未定义的行为

    2.1 位运算 位运算的运算对象是整数类型的,并且把运算对象看成是一个二进制位的集合.运算对象可以是带符号也可以是无符号.如果是带符号且值为负,那么位运算如何处理运算对象的符号位依赖于机器.而且此时的 ...

  3. VSCode中出现未定义标识符,可以找到引用但是依旧标红

    /*下边两个如果不添加,未定义引用,但是会出现标红*/ // "C_Cpp.intelliSenseEngineFallback": "Disabled", / ...

  4. php类中使用未定义的属性说明

    一般情况下,在类中要使用一个属性,最好是先申明这个属性.否则就是给自己的挖坑了. 先来看以下一段代码, <?php class test_class{public function out(){ ...

  5. C程序中的未定义行为(Undefined Behavior)

    什么是UB LLVM IR和C语言中都有UB的概念.很多在C语言中看似合理的事都可能导致UB,UB是代码中很多BUG的源泉. UB在C或类C语言中存在的原因是因为追求极致的性能.类似JAVA之类的语言 ...

  6. matlab中出现未定义函数或变量如何解决?

    A=[0 -1 4;9 -14 25;-34 49 64]; B=zeros(3,3); for i=1:3 for j=1:3 B(i,j)=A(i,j); end end disp(B) 复制j矩 ...

  7. g linux 未定义的引用_G ++ Cpp中的“未定义的引用”

    似乎无法使错误消失.错误如下.我已经看过Google了,但仍然想不起来.并不是我不是Cpp的新手,但有一段时间没有被它弄糊涂了. 奇怪的是它与Windows中的G ++一起使用... 错误: [ze ...

  8. linux c 编译 未定义的引用,c – Linux makefile中的未定义引用

    我想在linux下构建我的应用程序,但我无法使用我的makefile来实现它. 问题是我要链接的静态库.我得到了很多"未定义的引用"错误消息,如: undefined refere ...

  9. html显示未定义,(X)HTML中的未定义行为?

    这比检查 Yi Jiang和 mu is too short给出的DTD稍微复杂一些. 的确,XHTML 1.0 DTD明确禁止< a>元素作为< button>元素在您的问题 ...

最新文章

  1. app.config自定义配置节点
  2. 热点:3个故事概览突飞猛进的肠道病毒组研究
  3. 装饰器模式(Decorator)
  4. 『TCP/IP详解——卷一:协议』读书笔记——03
  5. JZOJ 4437. 【HNOI2016模拟4.10】线性代数与逻辑
  6. 申请美国计算机科学,美国计算机科学(Computer Science)申请条件
  7. java aspose重叠_Aspose.Words - 在特定位置合并两个文档
  8. 【51单片机快速入门指南】2.4:74HC595、LED点阵屏及其SPI控制
  9. leetcode620. 有趣的电影(SQL)
  10. javascript框架比较(四)
  11. 51单片机中断interrupt……using……
  12. [Ext JS]12.12.1 必填字段组件扩展
  13. 北京大学生物信息学学习(3动态规划进行2序列比对的原理 )
  14. layui 滚动加载与ajax,909422229_layUi关于ajax与loading问题
  15. mysql自增主键到头了怎么办_数据库自增主键用完了怎么办
  16. 河南省学业水平测试计算机题目,2015级河南学业水平考试试题及答案
  17. 合并两个有序数组的三种方法
  18. JQ树形菜单加表格混合使用:treeTable组件使用
  19. 谷歌浏览器提示adobeflashplayer已过期
  20. 英国智能机器人技术和自主系统研究发展概况

热门文章

  1. mysql主键用完了怎么办_MySQL 自增 ID 用完了怎么办?
  2. 京东五星电器送扫地机器人_家电也流行“套餐”,京东五星电器吹响国庆家装“集结号”...
  3. mysql处理时间_MYSQL时间处理  (转)
  4. android 自定义wifi设置在哪里,Android Wifi的设置、连接操作
  5. RDS Mysql中binlog日志查看
  6. day 3 list列表生成式
  7. 【从零开始】Python字符串的操作方法
  8. 51nod 1343 行列式的根
  9. Ubuntu实现树莓派交叉编译
  10. BZOJ 1692: [Usaco2007 Dec]队列变换( 贪心 )