Javascript 外部脚本添加到窗口,但添加的函数在Angular app中未定义

Javascript 外部脚本添加到窗口,但添加的函数在Angular app中未定义,javascript,html,angular,hubspot,Javascript,Html,Angular,Hubspot,所以,不幸的是,我需要在我的Angular应用程序中嵌入Hubspot表单。这是通过包含一个外部脚本并运行一些Javascript代码在页面上创建表单来实现的 需要包括以下脚本: <!--[if lte IE 8]> <script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2-legacy.js"></script> <![endif]--> <s

所以,不幸的是,我需要在我的Angular应用程序中嵌入Hubspot表单。这是通过包含一个外部脚本并运行一些Javascript代码在页面上创建表单来实现的

需要包括以下脚本:

<!--[if lte IE 8]>
<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2-legacy.js"></script>
<![endif]-->
<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2.js"></script>

然后可以运行hbspt.forms.create()来创建表单。不是很有趣,对吧

但有趣的是,在Angular应用程序中使用该代码时,该代码不起作用。我已经为一个有角度的项目和一个没有框架的项目准备了一个Stackblitz。两者在index.html中都有上述代码:

角度:
无框架:

现在,如果在页面上打开控制台并输入hbspt.forms.create(),则会导致
未定义
。然而,无框架项目按照预期工作,表明它是一项功能。这里发生了什么?如何使其在角度上工作?

请参见第32行 出于某种原因(没有看太远),他们循环并将所有列出的属性(第21/23行)设置为未定义。其中之一是
window.Promise

然后,当
zone.evergreen.js
启动该活动时,它抛出一个
无法读取未定义的
属性“prototype”,因为
NewNativePromise
将是
window.Promise
,该属性现在设置为
undefined

我只在动态加载脚本时看到过这一点。当按照您在
index.html
中显示的方式放置脚本时,一切似乎都正常运行。可能会赢得一场比赛,但是


尝试在自己的Zone.fork和ngZone.runOutsideAngular中运行它,但始终没有找到它。

你可以添加stackblitz的链接并使用代码进行编辑吗?@Mac\W我已经更新了链接Angular应用程序没有运行。获取错误“错误:无法读取未定义“@Mickers”的属性“prototype”,这似乎是问题的一部分。它在Firefox上运行,但Chrome会抛出这个错误。然而,两款浏览器都没有显示预期的行为。