場景:vuepress的markdown表格寫法很方便,但樣式很不友好,我希望markdown寫法渲染的表格寬度對齊,內容不強制換行,表格外層溢出有滾動條。為了實現這個目標,需要做2步操作:①設置table樣式寬度100%,格子內容不強制換行。②溢出的處理需要在表格外層套個div,設置overflow實現。第①通過修改樣式即可,第②需要通過js去操作dom才能實現。那么問題來了,第②的操作需要在什么時機執行呢,當頁面渲染完畢的時候,怎么監聽這一事件?路由一旦改變,頁面的內容就會刷新,卻沒有觸發window.onload事件,因為vuepress是單頁面的,通過加載js文件來渲染局部內容。我希望能在一個入口處,統一設置,執行第②的操作。目前做法,在enhanceApp.js中監聽路由改變,雖然該做法可以實現功能,但不保險,setTimeout不一定會趕在頁面渲染完畢之后。export default ({router}) => { router.beforeEach((to, from, next) => { next(); setTimeout(()=>{ let tables = document.querySelectorAll('#app > .theme-container > .page > .content > table'); tables && Array.from(tables).forEach(table =>{ table.outerHTML = `<div class="table">${table.outerHTML}</div>`; }); }) })};
vuepress 怎么監聽路由跳轉后頁面渲染完成?
尚方寶劍之說
2019-04-18 22:19:15