Skip to content

Commit e530ad1

Browse files
committed
release v1.0.9 | feature: support param opt.showFirstPage
1 parent 9264639 commit e530ad1

File tree

7 files changed

+37
-2
lines changed

7 files changed

+37
-2
lines changed

dist/darkmode.js

Lines changed: 19 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/darkmode.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

doc/cn/API.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ API
99
- `options` <Object> Dark Mode转换算法配置项。
1010
- `options.begin` <Function> Dark Mode转换开始时触发的回调。
1111
- `isSwitch` <boolean> 是否切换Dark Mode时进行转换。
12+
- `options.showFirstPage` <Function> 首屏处理完成时触发的回调。
1213
- `options.error` <Function> 发生error时触发的回调。
1314
- `err` <Error> 错误对象。
1415
- `options.mode` <string> 强制指定的颜色模式(dark | light),指定了就不监听系统颜色。

doc/en/API.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ API
99
- `options` <Object> Configuration.
1010
- `options.begin` <Function> Callback triggered when Dark Mode conversion starts.
1111
- `isSwitch` <boolean> Whether to switch to Dark Mode.
12+
- `options.showFirstPage` <Function> Callback triggered when the first page render finish.
1213
- `options.error` <Function> Callback triggered when an error occurs.
1314
- `err` <Error> Error object.
1415
- `options.mode` <string> The specified color mode (dark | light), if specified, the system color will not be monitored.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "mp-darkmode",
3-
"version": "1.0.8",
3+
"version": "1.0.9",
44
"description": "微信公众平台图文 Dark Mode 转换算法",
55
"main": "dist/darkmode.min.js",
66
"dependencies": {

src/darkmode.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
*
88
* @function init 初始化Dark Mode配置
99
* @param {Function} opt.begin 开始处理时触发的回调
10+
* @param {Function} opt.showFirstPage 首屏处理完成时触发的回调
1011
* @param {Function} opt.error 发生error时触发的回调
1112
* @param {String} opt.mode 强制指定的颜色模式(dark|light), 指定了就不监听系统颜色
1213
* @param {Object} opt.whitelist 节点白名单
@@ -43,6 +44,7 @@ const config = {
4344

4445
// hooks
4546
begin: null, // 开始处理时触发的回调
47+
showFirstPage: null, // 首屏处理完成时触发的回调
4648
error: null, // 发生error时触发的回调
4749

4850
mode: '', // 强制指定的颜色模式(dark|light), 指定了就不监听系统颜色
@@ -141,6 +143,7 @@ const switchToDarkmode = (mqlObj, opt = {
141143
// 显示首屏
142144
cssUtils.writeStyle(true); // 写入首屏样式表
143145
domUtils.showFirstPageNodes(); // 显示首屏节点
146+
typeof config.showFirstPage === 'function' && config.showFirstPage(); // 执行首屏回调
144147

145148
cssUtils.addCss(sdk.convert(node), false); // 写入非首屏样式
146149
}
@@ -152,6 +155,11 @@ const switchToDarkmode = (mqlObj, opt = {
152155
}));
153156
}
154157

158+
if (config.needJudgeFirstPage || (!config.needJudgeFirstPage && !domUtils.showFirstPage)) {
159+
// config.needJudgeFirstPage === ture,表示需要判断首屏但是正文长度没超过一屏
160+
// config.needJudgeFirstPage === false && domUtils.showFirstPage === false,表示不需要判断首屏且没有做首屏优化
161+
typeof config.showFirstPage === 'function' && config.showFirstPage();
162+
}
155163
cssUtils.writeStyle(); // 写入非首屏样式表
156164
} else {
157165
// 首次加载页面时为非Dark Mode,标记为不需要判断首屏
@@ -198,6 +206,7 @@ export function init(opt = {}) {
198206
}
199207

200208
setConfig('function', opt, 'begin');
209+
setConfig('function', opt, 'showFirstPage');
201210
setConfig('function', opt, 'error');
202211
setConfig('boolean', opt, 'needJudgeFirstPage');
203212
setConfig('boolean', opt, 'delayBgJudge');

src/modules/domUtils.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ export function hasTableClass(dom) {
5656
* @constructor
5757
* @param {Object} config Darkmode配置
5858
*
59+
* @attr {boolean} showFirstPage 是否已显示首屏
60+
*
5961
* @method set 设置要处理的节点列表
6062
* @param {Dom Object Array} nodes 要处理的节点列表
6163
*
@@ -82,6 +84,8 @@ export class DomUtils {
8284
_firstPageNodes = []; // 首屏节点列表
8385
_delayNodes = []; // 延迟处理的节点列表
8486

87+
showFirstPage = false; // 是否已显示首屏
88+
8589
constructor(config) {
8690
this._config = config;
8791
}
@@ -128,5 +132,6 @@ export class DomUtils {
128132
showFirstPageNodes() {
129133
this._firstPageNodes.forEach(node => node.style.visibility = 'visible'); // 显示首屏节点
130134
this._firstPageNodes = []; // 处理完之后清空列表
135+
this.showFirstPage = true; // 记录为已显示首屏
131136
}
132137
};

0 commit comments

Comments
 (0)