我的Angularjs1.5应用程序在实际页面的iFrame中的MS Dynamics 365环境中运行。
无论如何,看起来angularjs在等待来自Dynamics的所有JS操作完成,甚至在框架外(脚本加载等),只有在那时它才会引导实际的自己的应用程序。
这会导致许多性能加载问题。我理解它可能(不确定)是角度性质的等待所有的脚本,因为可能有一些与它的执行相关的东西。但如果该页面上有许多其他不相关的脚本,就会产生巨大的问题。
有没有办法说“嘿angular!等待脚本"jQuery.js,module1.js等等。”然后你被允许启动,因为那实际上是你所需要的全部“?
发布于 2018-12-27 20:51:20
只是把正确的事实放在上下文中,iframe是异步加载的,这意味着页面加载它的时候也会立即启动。现在,您可以手动控制iframe的加载行为,方法是使用创建iframe的Javascript代码将iframe加载到DOM中的时间延迟:
function createIframe() {
let iframe = document.createElement("iframe");
iframe.src = "<angularjs-app-url>";
iframe.scrolling = "auto";
iframe.frameborder = "0";
iframe.width = "200px";
iframe.height = "100px";
document.getElementById("div-that-holds-the-iframe").appendChild(iframe);
}然后,您可以在调用createIframe()函数之前检查是否加载了JS文件: jquery.js,module1.js:
window.onload = function() {
if (window.jquery && module1){
createIframe();
}
}发布于 2018-12-28 00:20:49
创建一个加载iframe的脚本,然后在调用中添加属性defer:
<script src="yourscrypt.js" defer></script>https://stackoverflow.com/questions/53887672
复制相似问题