Nuxt.js開発で出会った問題(一)windowまたはdocument is not defined
5958 ワード
ブログ
この号から、私はだんだんいくつかのブログシステムを開発して出会った問題をいくつか総括して、まずNuxtです.js;
ブログは主に自分のノートのまとめとして残しておきますが、もっと多くの人に見てもらいたいので、SEOの最適化を決めたいと思います.詳細ページはダイナミックで、
このような報告ミスに遭遇したのはnuxtのためだ.jsはサービス側でページをレンダリングしますが、サービス側にはwindowやdocumentはありません.の公式ソリューションは、 です.マイソリューション: は、上部に戻るvueコンポーネント を書く.プラグインを書いて を入れます.プラグインをプロファイル に書き込む.まとめ これで、上部コンポーネントの簡単な戻りが完了し、一般的にサービス側でレンダリングできないコンポーネントに遭遇してもこのように処理できます.
その後、
前言
この号から、私はだんだんいくつかのブログシステムを開発して出会った問題をいくつか総括して、まずNuxtです.js;
ブログは主に自分のノートのまとめとして残しておきますが、もっと多くの人に見てもらいたいので、SEOの最適化を決めたいと思います.詳細ページはダイナミックで、
prerender-spa-plugin
でプリレンダリングできないため、最後にNuxt.js
を選択しました.Windowsまたはdocument is not defined
このような報告ミスに遭遇したのはnuxtのためだ.jsはサービス側でページをレンダリングしますが、サービス側にはwindowやdocumentはありません.
<template>
<div id="go-top" v-if="isShow" @click="goTop" class="iconfont icon-arrowsupline">div>
template>
<script>
export default {
props: ['step', 'scroll'],
data () {
return {
isShow: false
}
},
created () {
const $this = this
window.onscroll = function () {
if (document.documentElement.scrollTop + document.body.scrollTop > $this.scroll) {
$this.isShow = true
} else {
$this.isShow = false
}
}
},
methods: {
goTop () {
const $this = this
let timer = setInterval(function () {
if (document.body.scrollTop) {
document.body.scrollTop -= $this.step
if (document.body.scrollTop <= 0) {
document.body.scrollTop = 0
clearInterval(timer)
}
} else {
document.documentElement.scrollTop -= $this.step
if (document.documentElement.scrollTop <= 0) {
document.documentElement.scrollTop = 0
clearInterval(timer)
}
}
}, 23)
}
}
}
script>
<style lang="less" scoped>
#go-top {
position: fixed;
bottom: 100px;
right: 50px;
cursor: pointer;
height: 50px;
width: 50px;
line-height: 50px;
text-align: center;
border: 2px solid #333;
color: #333;
font-size: 20px;
border-radius: 5px;
transition: all .5s;
&:hover {
border-radius: 50%;
color: #fff;
background: #333;
}
}
style>
plugins
フォルダに
/**
* goTop
*/
import Vue from 'vue'
import GoTop from '~/components/GoTop'
Vue.component('GoTop', GoTop)
nuxt.config.js
// nuxt.config.js, ssr false,
plugins: [
{
src: '~plugins/go-top',
ssr: false
}
]
その後、
requestanimationframe
バージョンの戻りトップが追加され、効果が向上します.setInterval
バージョンは互換性の低いバージョンのブラウザとして使用されます.