所以我用steroids.js和图书馆为我提供了这个事件:
document.addEventListener("visibilitychange", onVisibilityChange, false);
function onVisibilityChange() {
}
这工作如果我只是把它放在我的JS文件,但如何在与Backbone.js的视图翻译? 我如何与框架实现这一点? 我试图在初始化函数。对,但它似乎并没有工作。
所以我用steroids.js和图书馆为我提供了这个事件:
document.addEventListener("visibilitychange", onVisibilityChange, false);
function onVisibilityChange() {
}
这工作如果我只是把它放在我的JS文件,但如何在与Backbone.js的视图翻译? 我如何与框架实现这一点? 我试图在初始化函数。对,但它似乎并没有工作。
document
作为一个元素: var DocumentEventsView = Backbone.View.extend({
el : document,
events : {
'visibilitychange' : 'onVisibilityChange'
},
onVisibilityChange : function () {
console.log('inside onVisibilityChange');
}
});
// test
new DocumentEventsView();
$(document).trigger('visibilitychange');
el
: var DocumentEventsView = Backbone.View.extend({
initialize : function () {
$(document).on('visibilitychange', _.bind(this.onVisibilityChange, this));
},
onVisibilityChange : function () {
console.log('inside onVisibilityChange');
}
});
// test
new DocumentEventsView();
$(document).trigger('visibilitychange')
如果视图有document
作为view.el
,那么你可以听使用自定义DOM事件events
哈希 。
如果没有,那么你可以手动在听取事件initialize
方法。
initialize: function() {
$(document).on("visibilitychange", _.bind(this.hanldeVisibility, this));
}
这将工作,因此,如果没有你,也可以是一个竞争条件(检查任何异步行为等)。
在一个重要的方面说明。 这是非常重要的,一旦你的看法被删除,清除定制绑定事件。 这通常是处理是这样的:
remove: function() {
Backbone.View.prototype.remove.call(this);
$(document).off("visibilitychange");
}
如果你不清理后您的活动,您将创建内存泄漏。 而这最终可能会引起程序崩溃。