FrankKai

Results 350 comments of FrankKai

### ``的onerror属性 可以用来处理src资源下载失败,显示很丑的碎裂图的情况。 ![image](https://user-images.githubusercontent.com/19262750/42409332-58cade2c-820b-11e8-898d-daeb445db242.png) - 可以设置元素隐藏 ``` ``` - 可以设置默认图 ``` ```

### ``的tabindex属性 - tabindex属性代表着元素是否会被聚焦 - tabindex属性也可以代表tab键导航的顺序 - tabindex="-1"代表元素可以被聚焦,但是不能在tab键可访问的范围里,这对于构建无障碍的功能中很有用 - tabindex="0"代表元素可以被聚焦,也可以在tab键可访问的范围里,访问顺序由DOM节点顺序决定 - 尽量不要用大于0的tabindex,这可能会使得依赖辅助技术的人们无法操作页面 - 如果为``也设置了tabindex,其子节点若没有设置tabindex,是无法使用`ctrl/command+上/下/左/右`进行scroll的。参考demo可以进行验证:https://jsfiddle.net/jainakshay/0b2q4Lgv/ - tabindex的最大值是32767 #### 在vue中的应用 解决在vue中为div绑定keyup事件失效的问题。 ```html ```

### ``的async属性和defer属性 js文件的下载过程,会阻塞DOM解析,如果JavaScript文件中没有操作DOM的代码,就可以将JavaScript设为异步加载。 ``` ``` - async:脚本文件一旦加载完成,会立即执行,有可能阻塞 - defer:脚本文件会在DOM解析完成后,不阻塞 ### 相关问题 #### html解析过程中,script会阻塞html解析吗?为什么会阻塞? 会阻塞,因为script中的代码可能会操作DOM。 #### script标签的async和defer属性有什么区别? defer不阻塞html解析,会在html解析后执行。async会在网络请求后立即执行,如果此时html仍然在解析,那么async会阻塞html解析 #### 样式表是否会阻塞html解析?为什么? 样式表如果在script标签之前,会阻塞html解析。因为位于样式表之后的script,可能获取样式数据,如果不阻塞的话,获取时样式表可能没有加载完成,获取到错误的样式。 #### 哪种方式可以保证最安全的DCL? defer+样式表前置。defer保证脚本延迟加载,样式表前置保证样式加载完毕。 ![image](https://user-images.githubusercontent.com/19262750/164970570-15007133-510c-420b-92e0-3b279aa33453.png)

### ``的preload属性 >元素的rel属性的preload值允许您在HTML的中声明获取请求,指定您的页面将很快需要的资源,您希望在页面生命周期的早期,在**浏览器的主要渲染机制启动之前开始加载**。这可以确保它们更早可用,并且不太可能阻塞页面的呈现,从而提高性能。 ``` ``` 通过as声明文件类型。 支持style,script,image,audio,video等等

### ``fetchpriority属性 可以通过fetchpriority来控制资源优先级,不过截至2022年8月22日,这还是一个实验性api,兼容性不好。 例如: - 通过fetchpriority="high"提升主图的LCP速度 - 通过fetchpriority="low"降低低优先级资源加载 - iframe,fetch,script也都可以通过fetchpriority进行优先级控制 引自:https://addyosmani.com/blog/fetch-priority/ ```js // Trigger a fetch with low priority let suggestedContent = await fetch("/content/suggested", {priority: "low"}); // Scripts that are...

### path.join()与path.resolve()什么区别? 一个demonstration就可以说明主要问题: ``` const path = require('path'); const urlJoin = path.join(__dirname, '../../'); const urlResolve = path.resolve(__dirname, '../../'); console.log(urlJoin,urlResolve); //urlJoin: /Users/frank/Desktop/ //urlResolve: /Users/frank/Desktop ``` 细心的你一定发现了,join返会的路径以分隔符"/"结尾,而resolve以目录名结尾。 这是在传入"../../"的情况下,那如果直接传入目录名呢? ``` const urlJoinPersonal =...

### process.cwd() 由上面的path.js源码拓展出一个process.cwd()的问题。 老大说: - 正常情况下,process.cwd()返回的是当前的工作目录。也就是最顶级的node index.js的路径。不一定是文件所在路径。 - 但是在使用pm2监控进程时,process.cwd()返回的是process.json的路径,并不是启动文件index.js或者app.js的路径。 由于工科男的执着,我们对上面的结论做两次实验: #### 普通实验 ``` -path -dir foo.js bar.js index.js ``` index.js ``` const foo = require('./dir/foo'); const bar = require('./dir/bar'); console.log("dir/foo.js:",foo);...

### fs.readFile()与fs.readFileSync()有什么区别? 二者返回的结果都是目录下文件名数组,最为关键的地方在于Sync关键字。在nodejs中,有大量的*Sync类型的标准库api,就拿fs来说,就有下面这么多。 | without sync | with sync | | ------------- | ------------- | | fs.access | fs.accessSync | | fs.appendFile | fs.appendFileSync | | fs.chmod | fs.chmodSync |...

### os.cpus()的times返回数据的user mode,nice mode,sys mode,idle mode,irq mode是什么? #### Operating modes ARM7TDMI操作模式 User Modes是通常的ARM 程序执行状态,可以用于执行大多数应用程序。 Fast Interrupt (FIQ) mode支持数据转换或者渠道进程。 Interrupt (IRQ) mode被用于general-purpose中断处理。 Supervisor mode是操作系统的保护模式。 Abort mode在数据或者指令Prefetch Abort后输入。 System mode是一种操作系统的特权模式。 | Mode...

### crypto ![image](https://user-images.githubusercontent.com/19262750/43673621-dfeb9c0e-97f8-11e8-80ad-95f78c247162.png) ### Crypto Module crypto模块提供了密码学加密函数集,包括OpenSSL的hash,HMAC,cipher(暗号),decipher(破译),sign(签名)以及认证函数。 ``` const crypto = require('crypto'); const secret = 'abcdefg'; const hash = crypto.createHmac('sha256', secret) .update('I love you') .digest('hex'); console.log(hash); ``` 核心方法:[createHmac(algorithm, key ,[options])](https://nodejs.org/api/crypto.html#crypto_crypto_createhmac_algorithm_key_options)...