# 介绍

该插件在页面关闭时,记录当前浏览的位置信息。用来在下一次访问时,展示一个前往该位置的弹窗。

默认的弹窗样式与 @vuepress/plugin-pwa (opens new window) 一样。


# 安装

yarn add vuepress-plugin-last-reading
# or
npm i vuepress-plugin-last-reading

# 使用

module.exports = {
  plugins: [
    'last-reading'
  ]
}

# 选项

# popupConfig

  • 类型: Object
  • 必须: false

弹出组件中显示的默认提示文本内容。

module.exports = {
  plugins: [
    ['last-reading', {
      popupConfig: {
        message: '返回之前位置',
        buttonText: '确定'
      },
    }]
  ]
}

或者参考 i18n 配置多语言。

# popupCountdown

  • 类型: Number
  • 默认值: 10000
  • 必须: false

配置弹窗显示的时间。

# popupComponent

  • 类型: string
  • 必须: false

用于替换默认弹出组件的自定义组件,参考自定义弹窗样式

# popupCustom

  • 类型: Function
  • 必须: false

自定义弹窗相关逻辑。

提示

如果配置该选项,请通过下面方式定义函数

module.exports = {
  plugins: [
    ['last-reading', {
      popupCustom: function() {
        const now = new Date().getTime()
        if (now - this.lastReading.timestamp > 30 * 24 * 60 *60 * 1000) {
          this.clean()
        } else if (this.$route.path === this.lastReading.path) {
          this.goto()
        } else {
          this.show = true
          setTimeout(this.clean, 10000)
        }
      },
    }]
  ]
}

# 自定义弹窗样式

首先,您需要在 .vuepress/components 中创建一个全局组件 (例如 MyPopup)。 一个基于默认组件创建的简单组件如下:

<template>
  <LastReadingPopup v-slot="{ show, goto, message, buttonText }">
    <div v-if="show" class="my-sw-update-popup">
      {{ message }}<br>
      <button @click="goto">{{ buttonText }}</button>
    </div>
  </LastReadingPopup>
</template>

<script>
import LastReadingPopup from 'vuepress-plugin-last-reading/src/LastReadingPopup.vue'

export default {
  components: { LastReadingPopup }
}
</script>

<style>
.my-sw-update-popup {
  text-align: right;
  position: fixed;
  bottom: 20px;
  right: 20px;
  background-color: #fff;
  font-size: 20px;
  padding: 10px;
  border: 5px solid #3eaf7c;
}

.my-sw-update-popup button {
  border: 1px solid #fefefe;
}
</style>

接着,更新你的插件配置:

module.exports = {
  plugins: [
    ['last-reading', {
      popupComponent: 'MyPopup'
    }]
  ]
}