【bug】Vue v-html 中js脚本<script>标签不生效的问题

现象

想使用v-html 渲染拼接好的元素到vue模板中。

例子如下

定义(写死)的数据

【bug】Vue v-html 中js脚本<script>标签不生效的问题_第1张图片

绑定原生的html

【bug】Vue v-html 中js脚本<script>标签不生效的问题_第2张图片

这里绑定的content就是我回头要动态生成的html文本,最后渲染在页面上的效果如下:

【bug】Vue v-html 中js脚本<script>标签不生效的问题_第3张图片

 

 问题就在于,这里的脚本没有生效。

如果单独搞一个简单的html,虽然代码完全一样却是能生效的:

【bug】Vue v-html 中js脚本<script>标签不生效的问题_第4张图片

 

解决办法

完全搞不清楚为什么页面上明明显示了脚本,却不能生效。我想应该和浏览器的对这段代码段的解析时机有关,可能把谈当做普通的标签加载了。

但是经过各种百度终于找到一个比较孬的解决办法,唉,算是解决吧。。。。

先在模板里定义一个用于挂script 的div,叫ttttt

【bug】Vue v-html 中js脚本<script>标签不生效的问题_第5张图片

 然后在处理数据(后端获取到的标签内容)是,使用 this.$nextTick 手动new一个script 的 elemenet,添加到刚才指定的div下面

【bug】Vue v-html 中js脚本<script>标签不生效的问题_第6张图片

 总算能行了。。。

【bug】Vue v-html 中js脚本<script>标签不生效的问题_第7张图片

 script 挂上来了,也生效了

【bug】Vue v-html 中js脚本<script>标签不生效的问题_第8张图片

想想这么怪手法,是有点low...

 

你可能感兴趣的:(前端,bug,javascript,vue.js,html)