自以为是早期的 Win32 开发者,对事件系统非常熟悉,以为可以照搬到浏览器里面。尽管如此,但还是在 js 这里踩了坑,对浏览器中 js 执行顺序误解很大。

比如下面这些代码片段,打印顺序是啥样?

1
2
3
<img src="bad://" onerror="alert('111')" />
<script src="not-found.js"></script>
<script> alert(333); </script>

其中,not-found.js 是一个不存在的脚本。

测试用例:first.html

然后再看看下面这个:

1
2
3
<img src="bad://" onerror="alert('111')" />
<script src="222.js"></script>
<script> alert(333); </script>

其中,222.js 的内容是 alert(222);

测试用例:second.html,记得多刷新几次看看有没有不同。

以及:

1
2
3
<script src="222.js"></script>
<img src="bad://" onerror="alert('111')" />
<script> alert(333); </script>

测试用例:third.html

别问我,我不知道。

桃子的碎碎念 桃子 编辑