javascript audio 对象常用事件

最近在做一个媒体播放器,集成了图片+音频播放模式和视频播放模式,研究了下 js audio 对象的事件,整理了相关事件及触发顺序。

音频的初始加载事件顺序:依次触发 onloadstartonprogressonsuspend,然后 onprogressonsuspend 交替触发,直到触发 ondurationchangeonloadedmetadataonloadeddataoncanplayoncanplaythrough,加载完成。

点击播放后触发事件顺序:
onplayonplayingontimeupdate,播放控件开始缓冲部分音频文件onprogress,缓冲足够多的音频片段后触发onsuspend,当缓冲即将播放完后又触发onprogressonsuspend,依次循环直到音频全部缓冲完毕。

音频播放完毕后触发:
onpauseonended

暂停播放控件时触发:
onpause

从暂停恢复播放后触发:
onplayonplaying

javascript 正则表达式的那些坑

js 正则,匹配多行的
[.\n] 不能拿来匹配多行, [] 里的 . 会被解析成标点符号,而不是任意字符

Terminal 设置 path、alias

1
vi ~/.bash_profile
1
2
3
alias rn='react-native'
alias ro='react-native run-ios'
export PATH=$PATH:/usr/local/mysql/bin
1
esc
1
:wq!
1
source ~/.bash_profile

vi 编辑器命令备忘

打开一个文件

1
vi  ~/.bash_profile

跳到行首

1
0

跳到行尾

1
shift + 4

记一次 radio 标签 onblur 异常的分析过程

问题版本:Safari 10.0 (12602.1.50.0.10)

问题描述:

目标版本浏览器在鼠标点击 radio 的小圆点后再点击其他区域并不会触发 onblur 事件。问题可以重现,在 Chrome 下无此问题。

常用 MySQL 数据库语句

建表语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE TABLE `t_user` (
`id` varchar(30) NOT NULL COMMENT 'ID',
`login` varchar(100) NOT NULL COMMENT '账号',
`password` varchar(100) NOT NULL COMMENT '密码',
`nickname` varchar(10) DEFAULT NULL COMMENT '昵称',
`email` varchar(100) DEFAULT NULL COMMENT '邮箱',
`phoneCode` varchar(10) DEFAULT '86' COMMENT '国际电话区号',
`phone` varchar(30) DEFAULT NULL COMMENT '手机',
`create_at` varchar(24) DEFAULT NULL COMMENT '创建日期',
`create_by` varchar(30) DEFAULT NULL COMMENT '创建者',
`update_at` varchar(24) DEFAULT NULL COMMENT '修改日期',
`update_by` varchar(30) DEFAULT NULL COMMENT '修改者',
`delete_at` varchar(24) DEFAULT NULL COMMENT '删除日期',
`delete_by` varchar(30) DEFAULT NULL COMMENT '删除者',
PRIMARY KEY (`id`),
UNIQUE KEY `login` (`login`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表’;

增加字段

1
2
ALTER TABLE `t_user`
ADD COLUMN `qq` VARCHAR(15) DEFAULT NULL COMMENT 'QQ'; -- 增加一个 qq 字段

删除字段

1
2
ALTER TABLE `t_user`
DROP COLUMN `email`; -- 删除一个 email 字段

删除索引

1
2
ALTER TABLE `t_user`
DROP INDEX `login`; -- 删除 login 索引

修改字段

1
2
ALTER TABLE `t_user`
MODIFY COLUMN `nickname` VARCHAR(20) DEFAULT NULL COMMENT '昵称'; -- 修改 nickname 字段长度为 varchar(20)

修改字段名称

1
2
ALTER TABLE `t_user`
CHANGE COLUMN `phoneCode` `phone_code` VARCHAR(10) DEFAULT '86' COMMENT '国际电话区号'; -- 修改 phoneCode 字段为 phone_code

在某个字段后面插入一个字段

1
2
ALTER TABLE `t_user`
ADD COLUMN `wechat` VARCHAR(15) DEFAULT NULL COMMENT '微信' AFTER `phone`; -- 在 phone 字段后添加一个 wechat 字段

多条语句连起来写,中端用逗号分隔开

1
2
3
ALTER TABLE `t_user`
CHANGE COLUMN `phoneCode` `phone_code` VARCHAR(10) DEFAULT '86' COMMENT '国际电话区号', -- 修改 phoneCode 字段为 phone_code
ADD COLUMN `wechat` VARCHAR(15) DEFAULT NULL COMMENT '微信' AFTER `phone`; -- 在 phone 字段后添加一个 wechat 字段

删除表

1
DROP TABLE `t_user`; -- 删除 t_user 表