saber酱的抱枕

生于忧患,死于安乐

05/11
14:33
学习

JS 中 exec 和 match 进行正则表达式匹配的区别

设想一下简单的例子:有字符串 abcd,我们使用正则表达式 /\w/g 全局匹配它,应该获取到 a b c d 四个字符串。

正则表达式的 exec 方法和字符串的 match 都可以达到这个目的,但使用方式上有差别。

下面的内容只探讨全局匹配模式的情况。非全局匹配模式,可以基本认为它们没有差别。
Read More →

JS 中 exec 和 match 进行正则表达式匹配的区别

01/17
17:25
学习

HTML 表单小细节

1. 如果把单选、复选按钮隐藏,但又要让它能被 tab 到,则不能使用常规的 display: none; 或者 visibility: hidden; 隐藏,这会导致它不能被 tab 到。应该设置宽高为 0,透明度为 0。

2. 单选按钮可以用空格键选中,但再按空格不能取消选中。

那么当它选中之后,再按空格,会发生什么?表面上看什么都没发生,但实际上浏览器会把这个按钮的 checked 先变成 fasle,然后再变成 true。也就是按空格时,浏览器总会把它从未选中变成选中,走一次流程。

不过这个知识点实在有些冷……也很少能用到。
Read More →

HTML 表单小细节

04/23
09:13
学习

不规则的空白

今天有人报告我的 pixiv 图片下载器在某些情况下,无法保存某个图片。我去检查了下,发现这个作品(pid=73111615)最后的空格暗藏玄机。

不规则的空格 空白

复制这个空格,粘贴到别的地方,把光标放到最后,然后按键盘的 ← 箭头,会发现需要按 4 次才能到这个空格的前面。

复制到浏览器控制台,发现确实是 4 个字符。

不规则的空格 空白

经过检查,第一个空格是普通的空格,后面 3 个是特殊字符,它并不会显示出来。浏览器控制台里那时应该是做了特殊处理。这玩意放在代码里,ESLint 报错说这是“irregular whitespace”,不规则的空白。

最后我复制它的 Unicode 码 \u200b,把它替换掉了。

不规则的空格 空白

特殊字符防不胜防啊,不知道以后还会不会遇到别的来捣乱。

不规则的空白

04/21
08:48
学习 软件

NPM Module build failed: Error

vue-cli 里要用 scss,遂安装两个模块:

npm install sass-loader --save-dev
npm install node-sass --save-dev

以前也是这样的,没有问题,这次编译时却报错了:

Module build failed: Error: Cannot find module 'node-sass'

我就奇了怪了。node-sass 正常安装进去 node_modules 文件夹了,怎么还找不到。用 npm 时不时就遇坑,特别是以前没问题的地方,忽然蹦出来给你搞个幺蛾子,还找不到原因,烦死了。

之后我在网上搜索,检查了以下因素:

node-sass 安装是否完整?我是开着全局 ssr 的,不会是下载不完整。但为了死马当活马医,我还是移除它然后重新安装,不行。换用 cnpm 安装也还是不行。
检查版本,安装的版本确实是最新版本啊。
还有的说要 build 使用,执行 npm rebuild node-sass --force,报错。(其实不需要)

最后怎么解决的呢?强制删除 node_modules 文件夹,然后 npm i 重新安装所有包,这下好了。心累。

NPM Module build failed: Error