强制 Nuxt 到 运行 脚本标签
Force Nuxt to run script tag
我在页面上有一个脚本:
<script type="text/javascript">app_id="ID_HERE";distribution_key="dist_6";</script><script type="text/javascript" src="https://loader.knack.com/ID_HERE/dist_6/knack.js"></script><div id="knack-dist_6">Loading...</div>
如果我通过导航中的 NuxtLink 转到该页面,脚本会运行,但是如果我在浏览器地址栏中键入 URL,它不会运行。
有没有办法在直接访问页面时强制NuxtLink结果?
脚本标签来自 CMS,因此无法在合适的地方对其进行硬编码。
谢谢!
有一个 head
方法 (Docs) 可以让您加载外部脚本,但是
我找不到 script
属性.
的文档
我会像这样只在客户端动态加载脚本:
<template>
<div id="knack-dist_6">Loading...</div>
</template>
<script>
export default {
// ...
async created() {
// Do not load the script on the server side
if (!process.client) return
// Function to load the external script
function loadLib(id, distKey) {
const scriptId = 'knack-js'
return new Promise((resolve, reject) => {
// If script already exists than do not load it again
if (document.getElementById(scriptId)) {
resolve()
return
}
const s = document.createElement('script')
s.src = `https://loader.knack.com/${id}/${distKey}/knack.js`
s.id = scriptId
s.type = 'text/javascript'
s.onload = () => {
resolve()
}
s.onerror = (e) => {
reject(e)
}
document.head.appendChild(s)
})
}
try {
if (!window.app_id) {
window.app_id = 'ID_HERE'
window.distribution_key = 'dist_6'
}
await loadLib('ID_HERE', 'dist_6')
} catch (e) {
// Handle script loading error
console.error(e)
}
}
}
</script>
我在页面上有一个脚本:
<script type="text/javascript">app_id="ID_HERE";distribution_key="dist_6";</script><script type="text/javascript" src="https://loader.knack.com/ID_HERE/dist_6/knack.js"></script><div id="knack-dist_6">Loading...</div>
如果我通过导航中的 NuxtLink 转到该页面,脚本会运行,但是如果我在浏览器地址栏中键入 URL,它不会运行。
有没有办法在直接访问页面时强制NuxtLink结果?
脚本标签来自 CMS,因此无法在合适的地方对其进行硬编码。
谢谢!
有一个 head
方法 (Docs) 可以让您加载外部脚本,但是
我找不到 script
属性.
我会像这样只在客户端动态加载脚本:
<template>
<div id="knack-dist_6">Loading...</div>
</template>
<script>
export default {
// ...
async created() {
// Do not load the script on the server side
if (!process.client) return
// Function to load the external script
function loadLib(id, distKey) {
const scriptId = 'knack-js'
return new Promise((resolve, reject) => {
// If script already exists than do not load it again
if (document.getElementById(scriptId)) {
resolve()
return
}
const s = document.createElement('script')
s.src = `https://loader.knack.com/${id}/${distKey}/knack.js`
s.id = scriptId
s.type = 'text/javascript'
s.onload = () => {
resolve()
}
s.onerror = (e) => {
reject(e)
}
document.head.appendChild(s)
})
}
try {
if (!window.app_id) {
window.app_id = 'ID_HERE'
window.distribution_key = 'dist_6'
}
await loadLib('ID_HERE', 'dist_6')
} catch (e) {
// Handle script loading error
console.error(e)
}
}
}
</script>