2

我正在与客户共享一个脚本标签,以在客户的网站上部署我的 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 秒,但这不是客户接受的正确解决方案。

4

2 回答 2

1

下面的链接中讨论了类似的情况

如何检测是否加载了javascript文件?

您也可以尝试使用 $(window).load() 事件,因为这将在页面完全加载时触发。

$(window).load(function(){
  //your code here
});

PS:请注意,您需要在页面中加载 jQuery 才能使上述代码正常工作。

于 2012-12-13T12:14:33.027 回答
0

您可以尝试使用 jQuery:

$(document).ready(function()){
     // Your code goes here
};
于 2012-12-13T12:30:04.350 回答