mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-05 13:59:52 +08:00
web: skip scroll check
This commit is contained in:
parent
ba75c94f40
commit
f85f2cc3a3
@ -14,6 +14,8 @@ marked.setOptions({
|
|||||||
});
|
});
|
||||||
|
|
||||||
var updateHtml = function(html) {
|
var updateHtml = function(html) {
|
||||||
|
startFreshRender();
|
||||||
|
|
||||||
// There is at least one async job for MathJax.
|
// There is at least one async job for MathJax.
|
||||||
asyncJobsCount = 1;
|
asyncJobsCount = 1;
|
||||||
|
|
||||||
|
@ -133,6 +133,8 @@ var updateText = function(text) {
|
|||||||
text = "[TOC]\n\n" + text;
|
text = "[TOC]\n\n" + text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
startFreshRender();
|
||||||
|
|
||||||
// There is at least one async job for MathJax.
|
// There is at least one async job for MathJax.
|
||||||
asyncJobsCount = 1;
|
asyncJobsCount = 1;
|
||||||
metaDataText = null;
|
metaDataText = null;
|
||||||
|
@ -265,13 +265,22 @@ window.onwheel = function(e) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var skipScrollCheckRange = null;
|
||||||
|
|
||||||
window.onscroll = function() {
|
window.onscroll = function() {
|
||||||
if (g_muteScroll) {
|
if (g_muteScroll) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
currentHeaderIdx = -1;
|
|
||||||
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop || window.pageYOffset;
|
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop || window.pageYOffset;
|
||||||
|
if (skipScrollCheckRange
|
||||||
|
&& skipScrollCheckRange.start <= scrollTop
|
||||||
|
&& skipScrollCheckRange.end > scrollTop) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
currentHeaderIdx = -1;
|
||||||
|
skipScrollCheckRange = null;
|
||||||
var eles = document.querySelectorAll("h1, h2, h3, h4, h5, h6");
|
var eles = document.querySelectorAll("h1, h2, h3, h4, h5, h6");
|
||||||
|
|
||||||
if (eles.length == 0) {
|
if (eles.length == 0) {
|
||||||
@ -279,7 +288,8 @@ window.onscroll = function() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var biaScrollTop = scrollTop + 50;
|
var bias = 50;
|
||||||
|
var biaScrollTop = scrollTop + bias;
|
||||||
for (var i = 0; i < eles.length; ++i) {
|
for (var i = 0; i < eles.length; ++i) {
|
||||||
if (biaScrollTop >= eles[i].offsetTop) {
|
if (biaScrollTop >= eles[i].offsetTop) {
|
||||||
currentHeaderIdx = i;
|
currentHeaderIdx = i;
|
||||||
@ -291,6 +301,17 @@ window.onscroll = function() {
|
|||||||
var curHeader = null;
|
var curHeader = null;
|
||||||
if (currentHeaderIdx != -1) {
|
if (currentHeaderIdx != -1) {
|
||||||
curHeader = eles[currentHeaderIdx].getAttribute("id");
|
curHeader = eles[currentHeaderIdx].getAttribute("id");
|
||||||
|
|
||||||
|
// Update the range which can be skipped to check.
|
||||||
|
var endOffset;
|
||||||
|
if (currentHeaderIdx < eles.length - 1) {
|
||||||
|
endOffset = eles[currentHeaderIdx + 1].offsetTop - bias;
|
||||||
|
} else {
|
||||||
|
endOffset = document.documentElement.scrollHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
skipScrollCheckRange = { start: eles[currentHeaderIdx].offsetTop - bias,
|
||||||
|
end: endOffset };
|
||||||
}
|
}
|
||||||
|
|
||||||
content.setHeader(curHeader ? curHeader : "");
|
content.setHeader(curHeader ? curHeader : "");
|
||||||
@ -1827,3 +1848,8 @@ var clearMarkRectDivs = function() {
|
|||||||
delete n;
|
delete n;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Clean up before a fresh render.
|
||||||
|
var startFreshRender = function() {
|
||||||
|
skipScrollCheckRange = null;
|
||||||
|
};
|
||||||
|
@ -50,6 +50,8 @@ var updateText = function(text) {
|
|||||||
text = "[TOC]\n\n" + text;
|
text = "[TOC]\n\n" + text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
startFreshRender();
|
||||||
|
|
||||||
// There is at least one async job for MathJax.
|
// There is at least one async job for MathJax.
|
||||||
asyncJobsCount = 1;
|
asyncJobsCount = 1;
|
||||||
|
|
||||||
|
@ -89,6 +89,8 @@ var updateText = function(text) {
|
|||||||
text = "[TOC]\n\n" + text;
|
text = "[TOC]\n\n" + text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
startFreshRender();
|
||||||
|
|
||||||
// There is at least one async job for MathJax.
|
// There is at least one async job for MathJax.
|
||||||
asyncJobsCount = 1;
|
asyncJobsCount = 1;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user