mirror of
https://github.com/discourse/discourse.git
synced 2025-09-06 10:50:21 +08:00
BUGFIX: Fix issues if the DOM element is destroyed while the interval
is ongoing (in particular this was weird for Firefox)
This commit is contained in:
parent
7d6984a915
commit
47357136dc
1 changed files with 12 additions and 2 deletions
14
vendor/assets/javascripts/lock-on.js
vendored
14
vendor/assets/javascripts/lock-on.js
vendored
|
@ -8,8 +8,12 @@
|
|||
};
|
||||
|
||||
LockOn.prototype.elementTop = function() {
|
||||
var offsetCalculator = this.options.offsetCalculator;
|
||||
return $(this.selector).offset().top - (offsetCalculator ? offsetCalculator() : 0);
|
||||
var offsetCalculator = this.options.offsetCalculator,
|
||||
selected = $(this.selector);
|
||||
|
||||
if (selected && selected.offset && selected.offset()) {
|
||||
return selected.offset().top - (offsetCalculator ? offsetCalculator() : 0);
|
||||
}
|
||||
};
|
||||
|
||||
LockOn.prototype.lock = function() {
|
||||
|
@ -26,6 +30,12 @@
|
|||
var top = self.elementTop(),
|
||||
scrollTop = $(window).scrollTop();
|
||||
|
||||
if (typeof(top) === "undefined") {
|
||||
$('body,html').off(scrollEvents)
|
||||
clearInterval(interval);
|
||||
return;
|
||||
}
|
||||
|
||||
if ((top !== previousTop) || (scrollTop !== top)) {
|
||||
$(window).scrollTop(top);
|
||||
previousTop = top;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue