# web_auto_update
**Repository Path**: ywgcool/web_auto_update
## Basic Information
- **Project Name**: web_auto_update
- **Description**: web页面自动检测浏览器是否更新
- **Primary Language**: TypeScript
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2023-05-05
- **Last Updated**: 2023-05-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 自动检测 web 页面更新脚本
## 实现思路
实现机制是对比页面所有的 script 的标签,如果是工程化的(vue、react)会借助于 webpack 打包页面,一有更新 script 的 src 会变化 hash 值,与上次做对比,不一样就提醒更新.
具体:工程网站一打开,把所有 script 的 src 都保存一下,默认 2000 毫米请求下根路径,再看看根路径的 html 文件的 script 的 src 根上次是否一致,其中,根据配置可以使用默认的`onfirm("已发现更新内容,确定现在更新吗?")`同步方式弹框阻塞页面进程让用户选择性更新,也可使用`options.response`钩子进行自定义 UI 弹框,需要注意的是,在这个钩子中,用户必须提供更新页面的方法.
## sdk(引入)
### js script 引入
```html
My Web app
```
**也可以将资源包下载到项目本地,进行相对路径引入**
## 安装(包引入)
### npm
```javascript
npm i @ywg2244/web_auto_update
```
### pnpm
```javascript
pnpm i @ywg2244/web_auto_update
```
### yarn
```javascript
yarn add @ywg2244/web_auto_update
```
## 使用
```javascript
import AutoUpdate from "@ywg2244/web_auto_update";
// ...
new AutoUpdate({
baseUrl: "/", // 默认
times: 2000, // 默认
response() {
//... 弹出更新框,可以自己使用UI框架
//... 弹出自定义UI弹框,判断用户是否点击更新按钮 ,使用以下api进行更新
// 1* * location.reload();
// 2* * history.go(0);
},
});
```
## 配置文档
### options 属性说明
| 属性 | 版本 | 类型 | 说明 | 必须参数 | 默认值 |
| ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | :----- |
| baseUrl | >1.1.0 | string | 当前请求的地址 | false | '/' |
| times | >1.1.0 | number | 轮询请求首页的频率(毫秒) | false | 2000 |
| response | >1.1.0 | function | 响应函数 (检测到更新后的钩子,可以用来处理弹出 UI 弹框) 需要注意的是,在这个钩子中,用户必须提供更新页面的方法.
具体实现可参考:
1、 location.reload();
2、 history.go(0);] | false | |
| isWatchHtmlLength | >1.2.0 | boolean | 是否监听 html 节点字符串长度作为更新的判断 | false | false |
| debugger | >1.2.0 | boolean | 是否开启 debugger 模式,(console 输出更新对比的日志) | false | false |