最近在使用Vue 2.5.17版本搭建360全景展示頁面時,遇到了一個奇怪的問題,頁面一開始顯示白屏,無法正常展示。經過一番排查,最終終于找到了問題所在。
問題代碼如下:
<template>
<div id="demo"></div>
</template>
<script>
export default {
mounted () {
this.init()
},
methods: {
init () {
const krpano = document.getElementById('krpanoSWFObject')
krpano.call('loadpano()')
}
}
}
</script>
在執行krpano.call('loadpano()')之前,此時的krpano是undefined,進而導致整個頁面無法正常渲染。解決方法是在setTimeout內等待頁面完全渲染后再執行krpano.call('loadpano()')。修正后的代碼如下:
<template>
<div id="demo"></div>
</template>
<script>
export default {
mounted () {
setTimeout(() =>{
this.init()
}, 100)
},
methods: {
init () {
const krpano = document.getElementById('krpanoSWFObject')
krpano.call('loadpano()')
}
}
}
</script>
通過這個問題的排查,加深了我對Vue的生命周期和DOM操作的理解,也希望能對其他開發者有所幫助。