PageLifecycle.js是一个很小的JavaScript库(压缩了<1K),使开发人员可以轻松地观察Page Lifecycle API状态更改,并在所有浏览器中一致地实现Page Lifecycle最佳实践。
您可以通过运行以下命令从npm安装此库:
npm install --save-dev page-lifecycle
该库的发行版包括三个精简的,可立即投入生产的版本:
1. ES5:dist/lifecycle.es5.js
(UMD)
使用此版本可最大程度地与旧版浏览器(不能运行ES2015 +代码)兼容。
作为UMD捆绑包,在CommonJS或AMD环境中可能需要它,或者可以将其作为脚本标签加载为浏览器的global
lifecycle。
<script defer src="/path/to/lifecycle.es5.js"></script>
<script defer>
lifecycle.addEventListener('statechange', function(event) {
console.log(event.oldState, event.newState);
});
</script>
2. ES2015:dist/lifecycle.mjs
(ESM)
如果您仅支持支持ES模块的浏览器,或者您使用的
<script type="module">是
nomodule后备有条件地针对现代浏览器,请使用此版本。
<script type="module">
import lifecycle from '/path/to/page-lifecycle.mjs';
lifecycle.addEventListener('statechange', function(event) {
console.log(event.oldState, event.newState);
});
</script>
3. ES2015(天然):dist/lifecycle.native.mjs
(ESM W / O
EventTarget和
Event垫片)
如果您只针对支持扩展EventTarget
和Event
构造函数的浏览器,请使用此版本。
注意:此版本是最小版本,但仅在某些浏览器中可用。实施说明与上述ES2015版本相同。
PageLifecycle.js库导出一个
lifecycle对象,该对象是
Lifecycle该类的单例实例。本
Lifecycle类具有以下属性,方法和事件:
名称 | 类型 | 描述 |
---|---|---|
state |
string |
返回当前页面生命周期状态。 |
pageWasDiscarded |
boolean |
返回document.wasDiscarded(或 false如果不存在)的值。 |
名称 | 描述 |
---|---|
addEventListener |
参数:
添加检测到传递的事件类型时要调用的回调函数。(注意:目前仅支持“ statechange”事件类型。) |
removeEventListener |
参数:
从当前的侦听器列表中删除传递的事件类型的函数。(注意:目前仅支持“ statechange”事件类型。) |
addUnsavedChanges |
参数:
将项目添加到内部挂起的更改堆栈。调用此方法 beforeunload将向窗口添加一个通用侦听器(如果尚未添加)。 传递的参数对此状态应该是唯一的,因为只能通过将相同的参数传递给来将其删除 removeUnsavedChanges()。 |
removeUnsavedChanges |
参数:
从内部挂起的更改堆栈中删除与传递的参数匹配的项目。如果堆栈为空,则将通用 beforeunload侦听器从窗口中删除。 |
名称 | 描述 |
---|---|
statechange |
特性:
statechange只要页面的生命周期状态发生更改,就会触发该事件。 |
|
|
|
|
9+ |
|
PageLifecycle.js已经过测试,可以在上述浏览器中运行。