javascript - HTML 无法与外部 Javascript Angular 9 通信
问题描述
我在我的 Angular 9 应用程序中实现Duo Auth 。我在文件夹中有以下文件用于实现 Duo 身份验证。
|---index.html
|---abc.js
我的 index.html 文件如下所示
索引.html
<html>
<head>
<link rel="icon" type="image/x-icon" href="images/favicon.ico" />
<title>Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<script src="abc.js"></script>
</head>
<body>
<div class="duo_iframe_wrapper">
<iframe id="duo_iframe" title="Two-Factor Authentication"
data-host="abc.duosecurity.com"
data-sig-request="abc"
data-post-action="xyz">
</iframe>
</div>
</body>
</html>
什么有效
如果我只是在浏览器中打开 index.html 就可以了。iframe 完美加载
什么不起作用
我所做的,我尝试根据 Angular 组件结构转移到 index.html 上面。我创建了一个组件并将这个 html 粘贴到abc.component.html
. 现在我知道 angular 会忽略脚本标签,所以我尝试在内部加载外部 js angular.json
。当我路由到这个组件时。脚本按预期加载。但是 iframe 什么也没加载。iframe 正文空了。
我尝试在角度的 index.html 中加载外部 js。再次加载脚本,但 iframe 为空。我尝试通过以下几行在组件级别添加脚本标签
var dynamicScripts = ["../assets/js/custom/Duo-Web-v2.js"];
for (var i = 0; i < dynamicScripts.length; i++) {
let node = document.createElement('script');
node.src = dynamicScripts[i];
document.getElementsByTagName('head')[0].appendChild(node);
}
脚本加载正常,但 iframe 为空。我尝试在构造函数 ngOnInit 和 ngAfterViewInit 中加载它。
我认为 javascript 无法像在第一个场景中那样与 iframe 通信。
注意:如果我在 angular 的 index.html 中复制准确的 html 并在其中加载 javascript,它可以正常工作。
那么,谁能帮我理解我做错了什么?或者即使可能与否?
解决方案
推荐阅读
- javascript - 如何在 Mocha 测试用例中发送 Headers ('Authorization','Bearer token')
- ios - 使用可解码返回空模型解析 JSON
- python - Python正则表达式用时区替换日期
- pandas - 如何在熊猫中获得相同模式值很少的熊猫列的模式
- postgresql - 根据上次更新选择数据中的特定行
- c# - 如何比较 Azure 资源配置
- python - 预期的字符串或类似字节的对象错误
- python - 实现函数快速模幂运算
- azure - 启动/停止 Azure 虚拟机所需的角色
- javascript - 管道“AsyncPipe”的“[object Object],[object Object]”