Archivlink: javarea.de Forum > JavaScript > Seite nach Quelltext wieder herstellen
Vollständigen Link anzeigen: javarea.de Forum > JavaScript > Seite nach Quelltext wieder herstellen

Pages: [1]

geschrieben von zippy am 17.06.2009 - 06:20
Ich will eine Seite durch Klick nach etlichen Veränderungen (innerHTML, Attributänderungen und so weiter) wieder in den Auslieferungszustand versetzen, ohne sie neu laden zu müssen. Der Seitenquelltext wird ja unabhängig von Javascriptaktionen unverändert angezeigt.

Tipps?


geschrieben von Micha am 17.06.2009 - 19:07
Hallo,

im Browser liegt er aber nicht mehr unverändert. Du müsstest also den Originalquelltext am Anfang in einer Variable speichern und diesen bei bedarf wieder "laden".

Gruß Micha

geschrieben von zippy am 17.06.2009 - 20:36
Ist eine Arbeit für eine Bekannte, die sich über das "Binnen-I be gone" Plugin ärgert, weil ihr das Binnen-I so viel gibt. Ich habs vorerst so gelöst (Kurzform), und schreibs rein, damit der Thread entfragt wird:

HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
<script type="text/javascript">
function testit(){
var a=document.getElementById('testid').innerHTML;
if(a!="TischlerInnen"){
window.reload.location="view-source:"+window.location;
setTimeout(Quelltext,3000);
}
}
function Quelltext(){
var str=window.reload.document.getElementsByTagName('body')[0].innerHTML;
str=str.replace(/<[^>]*>/g, "");
str=str.replace(/\&lt\;/g, "<");
str=str.replace(/\&gt\;/g, ">");
//str=str.replace(/<html[^>]*>/g, "");
//str=str.replace(/<!DOCTYPE[^>]*>/g, "");
//str=str.replace(/<\/html[^>]*>/g, "");
document.write(str);
//document.getElementsByTagName('html')[0].innerHTML=str;
}
</script>


Erst wird in nem verborgenem Element (testid) geprüft, ob das Plugin greift, dann wird ein verborgenes iframe erzeugt (reload), und in dieses die FF-show-source-Darstellung geladen. Der werden dann alle Tags weggenommen, und danach die Tags des uelltextes wieder hergestellt. Dann document.write.

Mit document .open/close greift das Plugin wieder.

Sie hats jetzt so, dass beim dritten Greifen des Plugins die Seite mit dem freundlichen Hinweis geschlossen wird, dass man sie nicht ansehen müsse, wenn sie einem nicht gefiele.

Prinzipiell könnte ich den Quelltext natürlich anfangs in eine Variable schreiben, aber die Plugins greifen vor den Seitenscripts. Im View-Source steht aber stets der gelieferte Quelltext.

Hast du eine Idee, ob man diesen auch irgendwo als Eigenschaft irgendeines Objektes findet? Der FF hat ihn ja offensichtlich.

geschrieben von zippy am 17.06.2009 - 20:42
Ach ja, noch was: Die auskommentierten Zeilen sind eine Alternative zu document.write, wo der OriginalQT per innerHTML eingefügt wird, zwischen die html-Tags. Dann sind aber ALLE Formatierungen weg. Obwohl sie dann richtig im aktiven QT stehen. Kann man das irgendwie refreshen? Wenn ich bloß tiefere Knoten (body oder ein sorround-div) einfüge, scheint das kein Problem zu machen. Bei einer Totaltransplantation von html zu html werden aber die styles ignoriert.

Interessiert mich auch für andere Anwendungen.

geschrieben von zippy am 17.06.2009 - 20:56
... und in Zeile 10 wird der body des view-source-Dokuments ausgelesen, weil in diesem der ganze Quelltext des Originaldokuments steht. Das war verwirrend. Wenn man sich nämlich vom view-source-Dokument den QT anzeigen lässt, liefert der FF den QT des Originaldokuments.


Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.