我必须加载一个外部javascript文件才能访问某个对象。
通常,代码非常简单:
<script src='https://example.com/example.js'></script>
<script>
var instance = new ExampleObj.start({ container: 'element-id' });
</script>
<div id='element-id'></div>
如何在.vue
文件中完成此操作?
为什么不起作用:
export default {
...
mounted() {
const script = document.createElement('script')
script.setAttribute('src', 'https://example.com/example.js')
const start = document.createElement('script')
start.text = `var instance = new ExampleObj.start({ container: 'element-id' });`
document.body.appendChild(script)
document.body.appendChild(start)
}
...
}
上面的^示例给出了错误:ExampleObj not defined
,但是,如果我尝试访问ExampleObj
,则会在start
方法有效的情况下显示在开发人员控制台上。
答案 0 :(得分:2)
请按照以下步骤操作:
<script src='https://example.com/example.js'></script>
</head>
答案 1 :(得分:-1)
您应该等待脚本加载:
const script = document.createElement('script')
const start = document.createElement('script')
start.text = `console.log('jquery object', $('#app').text())`
script.onload = () => {
document.body.appendChild(start)
}
script.setAttribute('src', 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js')
document.body.appendChild(script)
您应该在onload事件之后设置src属性
此问题:Trying to fire the onload event on script tag
这是我制作的有效的jsFiddle:https://jsfiddle.net/jovmypnx/1/