Bei nach oben scrollen soll Seite aktualisiert werden (Userscript mit Javascript)

maaarv

Mitglied
Hi,

ich hab mich mal an einem kleinen Script versucht als absoluter Java-Anfänger und finde noch nicht irgendwie Lösungen.
Wenn ich mit zwei Fingern nach oben zum Top Scroll soll die Webseite aktualisiert werden, ähnlich wie bei Apps auf dem
Handy, wenn man nach oben scrollt.

Fehlt hier was? Was mach ich falsch?

// ==UserScript==
// @Name Site reload, when scroll top
// @version 1.0
// @description Lädt Seite neu beim hochscrollen.
// @include *
// ==/UserScript==


var topPos = d.offsetTop;
if (topPos > 10) {
//object offset is more
// than 10 pixels from its parent
window.location.reload(false);
}

Ich dachte, es wäre leichter, aber ich suche jetzt schon eine ganze weile nach Syntax, richtigen Befehlen etc.
 
Nicht Java, sondern JavaScript... Evtl. kann ein JQuery-Plugin (ohne Frameworks wie Angular, React,...) hier weiterhelfen.
 
Ich hab noch nen Counter miteingebaut, damit es dramatischer wird...

Javascript:
// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://stackoverflow.com/questions/4096863/how-to-get-and-set-the-current-web-page-scroll-position
// @icon         https://www.google.com/s2/favicons?domain=stackoverflow.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    let counter = 2;
    document.addEventListener('scroll', function(e) {
        let sp = document.documentElement.scrollTop || document.body.scrollTop;
        if (sp <= 0) {
            counter--;
        }
        if (counter <= 0) {
            counter = 2;
            window.location.href = window.location.href;
            // alternatively: location.reload();
        }
    });
})();

Achtung: Nicht mit allen Browsern dieser Welt getestet.

Btw.: match erlaubt auch Wildcards. 🙂
 
Btw.: match erlaubt auch Wildcards

Mit "include" geht das auf jeder Seite...

[CODE lang="javascript" highlight="6-7, 22"]// ==UserScript==
// @name Scroll-up-reload
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @include *
// @run-at document-end
// @author You
// @grant none
// ==/UserScript==

(function() {
'use strict';
let counter = 2;
document.addEventListener('scroll', function(e) {
let sp = document.documentElement.scrollTop || document.body.scrollTop;
if (sp <= 0) {
counter--;
}
if (counter <= 0) {
counter = 2;
location.reload();
}
});
})();[/CODE]

Aber ganz ehrlich, ich finde das jetzt schon nervig, obwohl ich es nur 5 Minuten in Gebrauch hatte.
 
Wow, danke. Das ist der Hammer. Genau was ich gesucht hatte. Ihr seid richtig klasse Männer.
Jetzt hätte ich noch eine Frage für die Feinheit und dann wäre das so ein heftig gutes tool.
Kann man das so machen, dass es erst aktualisiert, wenn man den oberen Top zum Beispiel erst um 15px überzogen hätte, statt direkt beim anstoßen am Top zu aktualisieren.
Ich hab jetzt das Script von Jari im Gebrauch.
 
Wow, okay. Ich hab das Script noch ein wenig verbessert. Erst wenn man zum Beispiel um 30px überzieht wird aktualisiert. Dafür hab ich einfach das gemacht.

Java:
// ==UserScript==
// @name         Scroll-up-reload
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @include      *
// @run-at       document-end
// @author       You
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    let counter = 2;
    document.addEventListener('scroll', function(e) {
        let sp = document.documentElement.scrollTop || document.body.scrollTop;
        if (sp <= -30) {
            counter--;
        }
        if (counter <= -30) {
            counter = 2;
            location.reload();
        }
    });
})();


Ihr wart eine Riesen Hilfe und ich weiß das sehr zu schätzen. Ehrlich. Bin so dankbar. Danke danke danke 🙂
 
Oh, ach so, ich dachte, der stoppt die Scroll-Position bei 0. Dann könntest du counter auch weglassen und stattdessen in der if nur counter <= -30 verwenden. 🙂

Sonst siehts gut aus. 🙂
 

Zurück
Oben