vue项目中要用到一个js视差滚动插件skrollr.js,看了插件的官方说明要在document加载完后再调用插件的init方法初始化插件:
现在问题来了,在vue中怎么监听window.onload事件,网上搜了很多都说vue中基本是不会用到window.onload事件的,那插件的初始化写在哪呢?
下面是我写的代码:
这样写的话只有在第一次刷新进入页面的时候插件可以初始化成功,如果是从该页面进入别的页面以后再回来的话window的load事件就不会再执行了,插件无法初始化也就用不了。
试过不用load事件,直接将init()写在mounted生命周期函数中,也不行,直接写在script标签内也不行。
哪位大神遇到过的可以解答以下,万分感谢~
使用单文件组件开发的vue程序,在vue代码开始运行之前就已经onload了(毕竟只有一个#app元素和几个js文件)。所以没必要监听onload。
同时可尝试在目标组件的mounted中使用this.$nexttick进行初始化,直接执行,不要加onload事件,同时由于vue的机制,重新进入路由页面时(非keep-alive)是重新创建的全新的dom元素,我觉得在销毁的时候需要手动解除视差效果,在进入后重新初始化。
这类不依赖vue进行dom操作的第三方库,一般都需要你手动销毁。