我与客户共享一个脚本标签,以便在客户的网站上部署我的网络应用程序。
基本上,通过这种方式,他可以将我的应用程序嵌入到他的网站上。
我给他的脚本只是在我的MVC应用程序中调用一个动作方法,并接收一个javaScript作为响应。
作为第一步,这个返回的JavaScript在客户端的head标签中插入所有js和css引用(我的应用程序需要)
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中的初始函数,我希望立即执行。所以我把它放在Script标签中,如下所示。
initcalls的内容是:
<script type=\"text/javascript\"> function icInitApp() { ..... }; </script>
问题是:我的应用程序在js引用上存在一些依赖关系。在客户端页面中的head标记识别并加载js引用之前,HTML已加载。
有没有办法保存我的(因此动态呈现)应用程序的init函数,直到所有js引用都被head标记完全加载?
我尝试用5秒钟给setTimeout(),但它不是客户接受的正确解决方案。
答案 0 :(得分:1)
下面的链接讨论了类似的情况
How to detect if javascript files are loaded?
您还可以尝试使用$(window).load()事件,因为在页面完全加载时会触发此事件。
$(window).load(function(){
//your code here
});
PS:请注意,您需要在页面中加载jQuery才能使上述代码正常工作。
答案 1 :(得分:0)
您可以尝试使用jQuery:
$(document).ready(function()){
// Your code goes here
};