TamperMonkey-Funktion nach window.location.href-Wechsel ausführen
English
Deutsch
Beim Automatisieren von Workflows mit TamperMonkey-Skripten haben Sie oft eine Situation, in der Sie eine Funktion ausführen, dann window.location.href setzen und nach dem Laden der neuen Seite einen weiteren Teil Ihres Codes ausführen möchten. Da der Browser die Seite jedoch physisch neu lädt, wird auch das Tampermonkey-Skript neu geladen - daher wird Ihre ursprüngliche Funktion nicht mehr ausgeführt.
Die Lösung ist einfach, sobald man das Konzept verstanden hat:
- Vor dem Neuladen der Seite setzen wir einen spezifischen Schlüssel in sessionStorage, der angibt, was wir tun möchten, sobald die Seite vollständig geladen ist
- Dann können wir
window.location.hrefsetzen - Bei jedem Seitenladen überprüfen wir, ob der Schlüssel gesetzt ist, und führen gegebenenfalls die entsprechende Funktion aus und löschen den Schlüssel
Beachten Sie, dass im TamperMonkey-Kontext dies auf Seiten beschränkt ist, die in der @match-Konfiguration des Skripts enthalten sind (andernfalls wird das Skript auf der neu geladenen Seite nicht ausgeführt):
tampermonkey-continuation.user.js
// ==UserScript==
// @name TamperMonkey continuation example
// @namespace http://tampermonkey.net/
// @version 0.1
// @author You
// @match https://techoverflow.net
// @grant none
// ==/UserScript==
(function() {
'use strict';
const continuationKey = "_my_script_continuation_key"; // Dieser sessionStorage-Schlüssel
// Fortsetzung prüfen
const continuationActions = {
"printMsg": onPrintMsg
};
const _continuation = sessionStorage.getItem(continuationKey);
if(_continuation) {
sessionStorage.removeItem(continuationKey);
const action = continuationActions[_continuation]
if(action) {action();}
}
function onPrintMsg() {
console.log("Dies wird nach dem Neuladen der Seite ausgeführt");
}
function onAltQ() {
console.log("Seite wird nun neu geladen...");
sessionStorage.setItem(continuationKey, "printMsg");
window.location.href = window.location.origin + "/";
}
function onKeydown(evt) {
// Verwenden Sie https://keycode.info/ um Tasten abzurufen
if (evt.altKey && evt.keyCode == 81) {
onAltQ();
}
}
document.addEventListener('keydown', onKeydown, true);
})();Check out similar posts by category:
Javascript
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow