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() {
|
LockOn.prototype.elementTop = function() {
|
||||||
var offsetCalculator = this.options.offsetCalculator;
|
var offsetCalculator = this.options.offsetCalculator,
|
||||||
return $(this.selector).offset().top - (offsetCalculator ? offsetCalculator() : 0);
|
selected = $(this.selector);
|
||||||
|
|
||||||
|
if (selected && selected.offset && selected.offset()) {
|
||||||
|
return selected.offset().top - (offsetCalculator ? offsetCalculator() : 0);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
LockOn.prototype.lock = function() {
|
LockOn.prototype.lock = function() {
|
||||||
|
@ -26,6 +30,12 @@
|
||||||
var top = self.elementTop(),
|
var top = self.elementTop(),
|
||||||
scrollTop = $(window).scrollTop();
|
scrollTop = $(window).scrollTop();
|
||||||
|
|
||||||
|
if (typeof(top) === "undefined") {
|
||||||
|
$('body,html').off(scrollEvents)
|
||||||
|
clearInterval(interval);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if ((top !== previousTop) || (scrollTop !== top)) {
|
if ((top !== previousTop) || (scrollTop !== top)) {
|
||||||
$(window).scrollTop(top);
|
$(window).scrollTop(top);
|
||||||
previousTop = top;
|
previousTop = top;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue