加载包含的Javascript脚本的顺序

时间:2016-09-20 13:04:30

标签: javascript

我的JS / HTML应用程序正在加载一些我已设置为包含对象文字的控制器:

例如:page1Controller.js

@Override public boolean onTouch(final View v, MotionEvent event) {
                //Some code

                switch (event.getAction()) {
                    case MotionEvent.ACTION_MOVE:
                        deltaY = event.getRawY() - downY;
                        if(//Some condition) {
                        listView.scrollTo(0, (int) -deltaY);
                        isScrolling = true;
                }
                break;
            }

例如:navigation.js

var page1 = {
  initialize() {
    $(".page").removeClass('on');
    $("#page1").addClass('on');
  },
  doThis: function() {
    // script here
  },
  doThat: function() {
    // Script here
  }
}

注意:navigation.js.bindEvents()在pageLoad / deviceLoad事件之后运行(它是一个phonegap应用程序)。

并且脚本包含在我的HTML页面底部:

var navigation = {
  bindEvents: function() {
    var page1Button = document.getElementById('page1Button');
    page1Button.addEventListener('click', this.loadPage1, false);
  },
  loadPage1: function() {
    page1.initialize();
  },
  loadPage2: function() {
    page2.initialize();
  }
}

据我了解,默认情况下,脚本将按照它们在HTML页面中出现的顺序依次加载 - 一个接一个地加载。

然而,当我从navigation.js调用say page3.doThat()时,doThat函数是未定义的,尽管某些其他控制器中的函数工作正常。是不是这样,即使脚本按顺序加载,在page3Controller.js完全“注册”它的功能之前可能会加载navigation.js?

1 个答案:

答案 0 :(得分:1)

答案是,在脚本按顺序加载到一组HTML脚本标记中的情况下,每个脚本都会在下面的脚本之前完整地加载到内存中,从而使以前脚本中的函数可以被稍后调用的函数访问。感谢@ T.J。克劳德在评论中指出了这一点。