Javascript 未执行Aurelia视图中的脚本标记
我正在向简单的aurelia视图添加一个简单的脚本块:Javascript 未执行Aurelia视图中的脚本标记,javascript,aurelia,Javascript,Aurelia,我正在向简单的aurelia视图添加一个简单的脚本块: <template> <script type="text/javascript"> alert('Hello!'); </script> </template> 警惕(“你好!”); 脚本永远不会运行,即使视图渲染正确,并且我可以看到脚本块确实出现在DOM中 我还尝试通过viewModel动态插入脚本块,并尝试使用: <script type="text
<template>
<script type="text/javascript">
alert('Hello!');
</script>
</template>
警惕(“你好!”);
脚本永远不会运行,即使视图渲染正确,并且我可以看到脚本块确实出现在DOM中
我还尝试通过viewModel动态插入脚本块,并尝试使用:
<script type="text/javascript" src="http://blah"></script>
我知道这样做不是最好的做法,但我正在尝试集成一个第三方小部件,然后呈现一个iframe。上面显示的警报只是验证我看到的问题的一种简单方法
现实情况如下:
- 我从视图模型向第三方进行api调用
- 返回以下内容:
我需要将它附加到DOM中并让它执行。我正在通过fetch调用上面的url来解决这个问题,然后执行响应,但这似乎是一种乏味的方法 我建议调整此答案中提供的解决方案: 在虚拟机的
bind
或attached
方法中(最有可能):
如果需要,您甚至可以通过保留对脚本元素的引用并在使用unbind
或detached
方法卸载组件时将其从head元素中删除来删除脚本元素
detached() {
document.querySelector('head').removeChild(this.scriptElementInHead);
}
以上内容确实适用于简单的警报示例,因此非常感谢-我仍然想理解为什么DOM中的脚本标记没有被执行!但是,当我尝试使用第三方小部件时,它不起作用。我怀疑这是因为从第三方返回的脚本如下:document.write(“”);我怀疑这更像是一个普通的文档。写问题,而不是脚本标记问题。正如我所怀疑的,我刚刚发现了这个错误:embeddedWidget?wid=CBFrJZ5QxKH5Ybg4ZRieHjGEJ_TbgQ7K…:1未能对“文档”执行“写入”:除非显式打开,否则无法从异步加载的外部脚本写入文档。使用激活方法时未显示此错误,但在我将负载连接到按钮时显示此错误。我遇到的问题不是Aurelia的问题,更多的是加载async时第三方小部件的实现。我会将你的答案标记为已接受,因为它在大多数情况下都有效。
detached() {
document.querySelector('head').removeChild(this.scriptElementInHead);
}