Sven Rautenberg: Danke, super

Beitrag lesen

Moin!

Wenn ich den temporär veränderten Quelltext ändere, stimmen
die Verweise nicht mehr, somit ändern sich u.U. Bilder,scripts, usw.

Alles bezieht sich dann auf eine falsche URL.

Du hast nicht verstanden, was wir dir mitteilen wollten.

Dein Aufruf (vereinfacht) lautet: javascript: innerHTML.replace();

Dieser Befehl liefert etwas zurück, und weil der Browser nicht weiß, wohin damit, setzt er die Rückgabe in das aktuelle Browserfenster ein - allerdings mit der Basis-URL des Javascript-Befehls.

Aufgrund dieser Basis-URL werden dann alle relativ referenzierten Ressourcen des HTML-Quelltextes falsch sein.

Korrekt wäre hingegen, die Rückgabe der Ersetzung wieder ins ursprüngliche Dokument hineinzupacken:

javascript: innerHTML = innerHTML.replace();

Dann wäre die Basis-URL gleichgeblieben, alles würde weiterhin perfekt funktionieren.

Dass du außerdem noch in den Browser-Bug des IE gerannt bist, der <html> für innerHTML nur lesend verfügbar macht - nun ja, ein unerwünschter Nebeneffekt, der mit deinem Problem nur am Rande zu tun hat.

Alle Teilnehmer dieses Threads, inklusive Cheatah, haben mehr oder weniger signalisiert, dass deine grundsätzliche Behandlung der Rückgabe von replace() fehlerhaft ist. Lies unter diesem Gesichtspunkt diese Antwort nochmal nach: https://forum.selfhtml.org/?t=149959&m=974205.

Fazit:
Also wenn ich mein Ziel erreichen will muss ich alle
URL übergreifenden Verweise auch gleich mit ändern, richtig ?

Falsch.

Du nimmst aus dem aktuellen Dokument den Inhalt. Ersetzt ein Wort. Und mußt das Resultat dann wieder in das aktuelle Dokument hineintun.

Das aber hast du nicht getan, wurde dir aber von Anfang an gesagt. Und es ist programmiertechnisch ja auch logisch: Wenn ich eine Textvariable habe, in der ich etwas ersetze, und am Ende das geänderte Ergebnis wieder in der Variablen drinstehen soll, muß ich das Ersetzte der Variablen wieder zuweisen.

- Sven Rautenberg

--
"Love your nation - respect the others."