Bookmarklet: Austausch Domain in neuen Tab öffnen

  • Firefox-Version
    88
    Betriebssystem
    Win10 Home

    Ich bin mal wieder am basteln mit einem Bookmaklet und scheitere teilweise und zwar möchte ich ein Bookmarlet erstellen was aus

    https://example.org/bla?v=irgendwas bei Klick darauf https://beispiel.de/bla?v=irgendwas macht und zwar in einem neuen Tab!

    Es soll also nur die Hauptdomain ausgetauscht werden.

    Was funktioniert ist:

    javascript:window.location=document.URL.replace("https://example.org","https://beispiel.de"); <-- allerdings wird das nur im gleichen Tab geöffnet

    javascript:(function(){window.open("https://beispiel.de"+ location.pathname )})();<-- öffnet zwar im neuen Tab, aber alles nach dem "bla" Teil ist abgeschnitten

    javascript:void(window.open('https://beispiel.de/'+location.href)); <-- da ist das https://example.org/ zwischen drin zu viel

    Ich bin mit meinen eh nicht vorhandenen Kentnissen am Ende. Hier gibts doch fündige Javascript Kenner, die das Problem bestimmt lösen können, oder?

    Zu aborix und Sören Hentzschel "schiel" :D

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

    • Hilfreichste Antwort

    Hallo,

    du hast doch bereits, wie du die Domain ersetzen kannst:

    document.URL.replace('https://example.org', 'https://beispiel.de');

    Und du hast bereits, wie du eine Seite in einem neuen Tab öffnest:

    window.open('https://beispiel.de');

    Du musst ersteres nur noch in zweiteres einfügen:

    javascript:window.open(document.URL.replace('https://example.org', 'https://beispiel.de'));

    Ergänze außerdem noch ganz am Ende:

    void(0);

    Der Code funktioniert ansonsten zwar auch, aber im aktiven Tab siehst du nur noch ein weißes Fenster mit folgendem Inhalt:

    [object Window]

  • cool, ja wenn man weiß wie es geht sieht es danach auch logisch und einfach aus :)

    javascript:window.open(document.URL.replace('https://example.org', 'https://beispiel.de'));void(0);

    Aber glaub mir, ich habe damit schon Stunden rum gebracht das heraus zu bekommen, bevor ich letztendlich gestern hier danach fragte.

    Wie dem auch sei. Es klappt hervorragend und genau so wie ich es haben möchte. Vielen Dank dafür :thumbup:

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

  • und wieder bin ich am basteln und zwar soll es diesmal erweitert werden. Zusätzlich zur Hauptdomain soll in einem neuen Tab nach dem / hinter der Hauptdomain die erste Ebene (wenn man das so betitelt?) mitgenommen werden, aber nicht die zweite Ebene, also wenn noch ein weiterer / erfolgt.

    Konkretes Beispiel:

    aus

    https://www.example.org/aaa/bbb/ccc/

    soll werden

    https://www.beispiel.de/aaa

    wie kann ich das bewerkstelligen?

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

  • oh, kaum hab ich den Post verfasst und noch bissel weiter rum probiert kam ich durch meine oben angeführten nicht funktionierenden Codes und Google-Recherche auf eine mögliche Lösung, nämlich:

    javascript:(function(){window.open("https://beispiel.de/"+ location.pathname.split('/')[1] )})();

    Da ich aber weiterhin keine Ahnung von Javascript habe und nur durch ausprobieren darauf kam, kann mir vielleicht jemand sagen ob das so korrekt ist?

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

  • Da spricht aus meiner Sicht nichts gegen, wenn der Anwendungsfall immer genau so aussieht. Ich würde nur schauen, dass der Code-Stil etwas einheitlicher ist. Du mischst doppelte und einfache Anführungszeichen, nach dem + hast du ein Leerzeichen, davor keines, nach der öffnenden Klammer von window.open() hast du kein Leerzeichen, vor der schließenden aber schon. Funktional macht das alles keinen Unterschied, aber da wird mein innerer Monk verrückt. ;)

  • und wieder möchte ich ein bestimmtes Bookmaklet erstellen, diesmal soll aus

    https://www.example.org/aaa/

    in einem neuen Tab die Seite

    https://www.beispiel.de/aaa/hier.nochwas.dran

    geöffnet werden

    allerdings ist aaa immer variabel.

    Also sollte auch aus

    https://www.beispiel.de/bbb/hier.nochwas.dran

    https://www.example.org/bbb/

    mit dem Bookmarklet der neue Tab

    https://www.beispiel.de/bbb/hier.nochwas.dran

    geöffnet werden


    wie kann ich das bewerkstelligen? :/

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

    3 Mal editiert, zuletzt von Zitronella (23. Oktober 2022 um 11:27)

  • JavaScript
    javascript:(function(){window.open(location.origin + location.pathname + 'hier.nochwas.dran' + location.search + location.hash)})();void(0);

    Der Grund, wieso ich das über die Einzelbestandteile von location konstruiere, ist der, dass mögliche Query-Parameter (?foo=1&bar=2) sowie Hashes (#baz) am Ende erscheinen müssen, sollte es das geben. Würde man einfach das hier machen:

    JavaScript
    javascript:(function(){window.open(location + 'hier.nochwas.dran')})();void(0);

    … funktioniert das zwar für den Fall, dass es weder Query-Parameter noch einen Hash gibt, aber nicht mehr, sobald eines von beidem in der URL vorkommt, weil einfach nur location die komplette URL mit allen ihren Bestandteilen beinhaltet und so der Zusatz einfach ganz ans Ende gehängt würde.

  • Danke, aber wie es immer so ist hab ich wieder durch ausprobieren auch selbst ne Lösung gefunden, wenn auch anders als deine.

    Außerdem machte ich oben einen Kopierfehler. Habs jetzt korrigiert (durchgestichen)

    Meine Lösung ist


    javascript:window.open(document.URL.replace('https://www.example.org', 'https://www.beispiel.de')+'/hier.nochwas.dran');void(0);

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)