Javascript 未执行Aurelia视图中的脚本标记

Javascript 未执行Aurelia视图中的脚本标记,javascript,aurelia,Javascript,Aurelia,我正在向简单的aurelia视图添加一个简单的脚本块: <template> <script type="text/javascript"> alert('Hello!'); </script> </template> 警惕(“你好!”); 脚本永远不会运行,即使视图渲染正确,并且我可以看到脚本块确实出现在DOM中 我还尝试通过viewModel动态插入脚本块,并尝试使用: <script type="text

我正在向简单的aurelia视图添加一个简单的脚本块:

<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);
 }