Userscript für Tampermonkey schreiben

hemorieder

Lieutenant
Registriert
März 2003
Beiträge
649
Hey,

ich weiß nich ob es das richtige Unterforum in dem ich poste. Daher gerne verschieben falls falsch.

Ich würde gerne folgendes realisieren und ich glaube ein Userscript für Tampermonkey wäre das einfachste.
Ich möchte das folgendes geschieht.

Situation:

Ich bin auf (und nur da soll es geschehen)

www.xyz.de/kategorie/variabel/variabel/variabel

Nur den fetten Teil kenne ich definitiv, alles was danach in der URL kommt ist unbekannt, es kommt aber definitiv dahinter etwas.

Ich klicke auf den Button mit der

class="button"

Direkt danach soll im selben Fenster eine neue URL geöffnet werden.

www.xyz.de/ende

Also in Pseudocode

Code:
if page == www.xyz.de/kategorie/*
if click on = class="button"
redirect == www.xyz.de/ende

Das war es auch schon. Ich kenne mich leider überhaupt nicht damit aus.
Glaube aber irgendwie, dass es nicht so schwer sein kann oder?

Wäre super wenn mir jemand helfen könnte.

lg
 
Ja, das ist einfach umsetzbar,
Sprache JavaScript.

Die Seite, auf der es laufen soll,
setzt du mit @match im Script-Head vom Tampermonkey.

Falls der Button im DOM bereits vorhanden ist,
suchst du ihn mit einem passenden DOM Selector
und änderst dann die href property des Link Elements auf dein gewünschtes Ziel.

Ist der Button nicht vorhanden,
erstellst du ihn neu mit createElement.
 
Hey, also ich hab jetzt folgendes:

Code:
// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        http://www.abc.de/shop/*
// @grant        none

// ==/UserScript==

(function() {
    'use strict';


document.querySelector("input.button").href = "https://www.abc.de/xyz";

})();

Der selector ist richtig, wenn ich den Hintergrund ändere wird dieser Button verändert.
Aber mit diesem Link klappt es nicht.
Es soll auch nach wie vor das geschehen was auch geschehen soll wenn man Button klickt, nur danach möchte ich umgeleitet werden.
 
Also die Standard Aktion des Buttons soll ausgefuehrt werden und danach der Seitenwechsel geschehen?
Wie soll es ausgeloest werden? Wenn die Seite geladen wird?

Javascript:
(function() {
    'use strict';

    // Klick auf Button ausfuehren
    document.querySelector("input.button").click();

    // Nach einer Sekunde auf Seite umleiten
    setTimeout(function() {
        window.location = "https://www.abc.de/xyz";
    }, 1000);

})();
 
Erstmal vielen Dank das du mir so hilfst.

Sobald ich auf den Button klicke, soll die Umleitung erfolgen.
Und mir ist aufgefallen, dass das Skript immer erst geht, wenn ich die Seite manuell refreshe, dazu habe ich gelesen das es das Argument waitForKeyElements wohl gibt.
Klappt bei mir aber irgendwie nicht ?!
 
Steht auf der Seite jQuery zur Verfuegung, dann koennte man $(document).ready() verwenden.
Kannst du die Seite posten?

ggf. funktioniert das hier (aber ohne (function() { 'use strict'; drum rum)
Javascript:
waitForKeyElements (
    "#element-mit-buttons-drin", function() {
        // Klick auf Button ausfuehren
        document.querySelector("input.button").click();

        // Nach einer Sekunde auf Seite umleiten
        setTimeout(function() {
            window.location = "https://www.abc.de/xyz";
        }, 1000);
    }
);
 
Also wie ich gerade ist es so, sobald ich die Seite öffne taucht in tampermonkey das skript erst garnicht auf, also wie es denken würde, hier gibt es nix zutun.
Erst wenn ich refreshe sehen ich in Tampermonkey das mein skript angewendet werden soll.

Ich glaube das ist ein anderes Problem oder ?
 
Ich hab es nun auf Prio 1 gestellt, jetzt ist es immer an. Klappt aber dennoch erst nach dem refresh.

jQuery ist auf der Seite nicht eingebunden.

Das mit dem Selektor klappt irgendwie nicht, ich würde aber ungern hier die Seite posten, kann ich das mit dir per PM machen ?
 
Resultat nach PM Gespraech:

Die Webseite laedt Content mittles Turbolinks nach, sodass man sich ebenfalls in das page:change Event einklinken muss.

Javascript:
// ==UserScript==
// @name         Toller Skript Name
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       Me
// @match        http://www.abc.com/*
// @match        https://www.abc.com/*
// @require      https://code.jquery.com/jquery-1.8.2.min.js
// @grant        none

// ==/UserScript==

function bindAddToBasket(e) {
  $('#details').on('click', "input.button[value='add to basket']", function(e) {
    setTimeout(function() {
      window.location = ("https://www.abc.com/checkout");
    }, 300);
  });
}

// Bei page:change Event ausfuehren
$(document).bind("page:change", bindAddToBasket);

// Bei Seitenaufruf ausfuehren
$(document).ready(function(e) {
  bindAddToBasket(e);
});
 
  • Gefällt mir
Reaktionen: mastaqz
Zurück
Oben