如何在 nuxt 中将 <script> 插入 div

Posted

技术标签:

【中文标题】如何在 nuxt 中将 <script> 插入 div【英文标题】:How to inset <script> into div in nuxt 【发布时间】:2021-02-27 11:34:12 【问题描述】:

也许有人遇到过这样的问题并可以建议如何解决它: 我需要将脚本插入到一个特殊的 div 中。这个脚本改变了 DOM。插入块,添加类和样式。它是外部脚本和 它呈现这个页面。 Vue中没有问题。然后 Nuxt 抛出错误。 有人可以建议该怎么做吗?)

错误:

nuxt-error.vue?48f2:14 未捕获的类型错误:无法读取属性 “接受”未定义 在评估(VM6157 nuxt-error.vue:14) 在 Object../node_modules/vue-style-loader/index.js?!./node_modules/@nuxt/webpack/node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/ loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/vue-loader/lib/index.js?!./.nuxt/components/nuxt-error.vue?vue&type =style&index=0&lang=css& (app.js:437) 在 (app.js:2) 在评估(VM6156 nuxt-error.vue:2) 在 Module../.nuxt/components/nuxt-error.vue?vue&type=style&index=0&lang=css& (app.js:119) 在 (app.js:2) 在评估(VM6151 nuxt-error.vue:4) 在 Module../.nuxt/components/nuxt-error.vue (app.js:95) 在 (app.js:2) 在 eval (VM6142 index.js:35)

<template>
    <div class="skin" ref="scriptHolder">
      <div id="hwm-ubs-ticketsystem" data-id="757d440c95b9539fd9f79b8407fb8e9fe23b23315cfe6085">      </div>
    </div>
</template>

<script>

export default 
  components: 
  ,
  mounted() 
    let scriptEl = document.createElement('script')
    scriptEl.src = 'https://site/assets/js/app.js'
    scriptEl.type = "text/javascript"
    let styleEl = document.createElement('link')
    styleEl.setAttribute('href', 'https://site/assets/css/app.css')
    styleEl.setAttribute('rel', 'stylesheet')
    const divEl = document.querySelector('#hwm-ubs-ticketsystem')
    this.$refs['scriptHolder'].insertBefore(styleEl, divEl)
    this.$refs['scriptHolder'].appendChild(scriptEl)
  


</script>

<style>

</style>

Error Screenshot

【问题讨论】:

你想什么时候执行这个脚本?当页面呈现或点击时? 页面渲染时 如果你想添加一个类例如你可以使用 v-bind 并在页面呈现时添加一个类 为此,您只需要在 data() 中定义一个布尔值,例如 pageLoaded: false,我认为这个页面解释得更好vuejs.org/v2/guide/class-and-style.html 是的,但它是外部脚本,我无法编辑它。此页面上的所有操作都必须由此脚本执行。所有类和样式也由外部脚本添加。它呈现此页面的内容 【参考方案1】:

您可以检查 webpackJson 默认名称是否有问题。 Nuxt 使用 webpack 4 版本,也许您的外部脚本也使用 webpack 4,因此 webpackJson 首先由 nuxt 填充,然后使用外部脚本填充,并且在运行时存在冲突,因此您可以使用 jsonpFunction 更改 nuxt 项目的默认名称:'webpackJsonp_name' ,然后你的外部脚本应该默认加载 webpackJson。

【讨论】:

以上是关于如何在 nuxt 中将 <script> 插入 div的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Nuxt Js 将数据属性添加到脚本标签?

如何将 npm 包中的 JS 文件包含到 Nuxt.js 中的单独页面

如何使用 Nuxt 访问 asyncData 中的数据

无法在 Nuxt 组件中使用 axios 从 api 获取数据

使用 Nuxt/Vue.js 划桨

在nuxt项目中配置笔芯(VUE组件)