动态加载的javascript有时会工作

时间:2013-11-22 17:36:41

标签: javascript jquery html

我在我的文档的<head/>中动态加载此javascript文件,如此

<script type="text/javascript">     
    if (window.screen.width <= 1600)
    {
        console.log("start");
        var jsref1 = document.createElement('script');
        jsref1.setAttribute("type", "text/javascript");
        jsref1.setAttribute("src", "/javascript/mobileFunction.js");         
        document.getElementsByTagName("head")[0].appendChild(jsref1);                       
    }
    console.log(end)
</script> 

在我的所有javascript文件中,我有一个名为$(document).ready

的自定义事件
$(document).on("xsltready", function () {
  ...more code....       
   console.log("event alled here " + a variable);

问题是我从动态加载的javascript看到两个控制台的输出,当我检查web-inpector中的脚本文件夹下的资源文件夹(我正在使用移动safari和远程Web检查器)时,文件就在那里。问题是,有时当我刷新页面时,看起来文件没有被加载,因为脚本内部的console.log()都没有被执行。但如果我再次刷新几次,它会回来。这是一个动态加载JavaScript的行为吗?

注意

我仍然可以在动态加载的JS文件中调用该方法,但是$(document).ready末尾触发的自定义事件根本不会被执行。

1 个答案:

答案 0 :(得分:0)

感谢@Levi,他的评论高于,他帮助我朝着正确的方向前进。他是正确的,因为$(docuemnt).ready在脚本加载之前被触发了。 在准备好之前,DOM不会等待脚本加载。 ~Levi。所以我所做的不是在$(docuemnt).load中触发我的自定义事件,而是在$(window).load事件中触发,这解决了问题。但现在我遇到了性能问题。