在文档完全加载之前执行的骨干脚本

时间:2014-05-29 19:20:29

标签: javascript ruby-on-rails backbone.js

我正在使用骨干构建我的第一个rails应用程序,并且由于资产管道,即使在文档完全加载之前,Javascript也会被调用/执行。因此,没有任何事件处理程序得到附加。如果我将这个Javascript放在文档末尾的HTML标记之后,那么它似乎工作正常。如何在页面完全加载后执行此代码?我总是可以使用jQuery的document.ready(),但我希望骨干有一个内置的过程来处理它。

 <script type="text/javascript">
    (function() {
      "use strict";
      var app;

      app = {};

      app.AppView = Backbone.View.extend({
        el: "body",
        initialize: function() {
          this.playAudio();
        },
        events: {
          "click .play-audio": "playAudio"
        },
        playAudio: function() {
          alert($("span").data("audio"));
        }
      });

      app.appView = new app.AppView();

    }).call(this);

</script>

<div>
    <p>Whatever!</p><span class="glyphicon glyphicon-volume-up play-audio" data-audio="http://my-audio-file"></span>
</div>

3 个答案:

答案 0 :(得分:1)

将您的函数指定为document.onload或window.onload属性。两者都做了几乎相同的事情,但主要取决于浏览器。

 <script> document.onload=(...your function goes here....) </script>
 //OR
 <script> window.onload=(...your function goes here....) </script>

答案 1 :(得分:1)

执行代码的最快方法是使用DOMContentLoaded事件侦听器:

以下是:

 <script>
 document.addEventListener("DOMContentLoaded", function(event) {
   //your code here
  });
 </script>

其他有用的事件监听器是:

 window.onload = myfunction() ;
 //or
 document.onload = myfunction();
祝你好运!

答案 2 :(得分:0)

您可以轻松覆盖默认的渲染方法。 就像这样:(对不起我的咖啡脚本)

render: () ->
  super()
  @customMethodToRunAfterThePageIsLoaded()

我将它用于使用jQuery插入到html中的页面后加载计算。