我正在使用骨干构建我的第一个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>
答案 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中的页面后加载计算。