我正在与客户共享一个脚本标签,以在客户的网站上部署我的 Web 应用程序。
基本上通过这种方式,他可以将我的应用程序嵌入到他网站上的任何地方。
我给他的脚本只是在我的 MVC 应用程序中调用一个操作方法并接收一个 JavaScript 作为响应。
作为第一步,这个返回的 JavaScript 将所有 js 和 css 引用(我的应用程序需要)插入到客户端的 head 标记中
function createScriptElement(src) {
var tmp = document.createElement("script");
tmp.src = src;
var head = document.getElementsByTagName("head")[0];
head.appendChild(tmp);
};
然后在第二步中,它将 html 内容写入一个动态 div 中。
document.write(format("<div id='mycontainer'>{0}</div>{1}", AppHtml,initcalls ));
“initcalls”包含我希望立即执行的应用程序 javascript 中的初始函数。所以我把它放在下面的脚本标签中。
initcalls的内容是:
<script type=\"text/javascript\"> function icInitApp() { ..... }; </script>
问题是:我的应用程序中有一些依赖于 js 引用。HTML 在客户端页面中的 head 标记识别并加载 js 引用之前被加载。
有什么方法可以保存我的(因此动态渲染的)应用程序的 init 函数,直到所有 js 引用都被 head 标签完全加载?
我尝试给 setTimeout() 5 秒,但这不是客户接受的正确解决方案。