【发布时间】:2014-05-29 19:20:29
【问题描述】:
我正在构建我的第一个带有主干的 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>
【问题讨论】:
-
Backbone 建立在 jQuery 之上。HTML 页面是自上而下解析的。因此,如果您没有使用像
require.js这样的 Asyn 库,如果您没有在DOM.ready处理程序中声明您的代码,您将始终看到您遇到的问题。它始终是声明JS代码的最佳方法在 HTML 之后避免在页面开始呈现之前运行脚本.. -
谢谢,我会考虑使用 require.js。现在,我可能只是将 JS 脚本标签移动到页面底部 - stackoverflow.com/questions/8038484/…。
标签: javascript ruby-on-rails backbone.js