v-html 及vue-append外掛

lmr發表於2018-12-23

前言

先說一下,使用v-html要達到什麼效果。

故事是這樣的: 我們系統需要一個“程式碼元件”,即使用者可以插入html/css/js程式碼來修改他的網站。所以,我就想到了用v-html指令來渲染使用者提交的程式碼。 PS : innerHTML是不會執行script程式碼的。

v-html:

更新元素的 innerHTML v-html也不會執行script程式碼。

解決方案

百度and google一番,給出的方案大致如下: 1.在渲染完成後,過濾掉script程式碼,動態插入script標籤 2.過濾下script程式碼,使用elval執行 3.自己寫一個可以執行script的指令

最終:我使用了一個現成的外掛vue-append

vue-append: like v-html directive, but it can call javascript function

使用外掛的時候,有一點小問題就是,該外掛不支援script外鏈的形式。 看了它的github的issues,發現裡面就有其解決方案。 方案連結如下: github.com/hacke2/vue-…

總結

看了一下vue-append的原始碼,其實現的原理分析如下: 匹配script程式碼,將裡面的程式碼使用eval執行。

image.png

相關文章