Ich schreibe ein User-JS für Opera. Es reagiert auf eine Anforderung, die keine Erweiterung aufweist, z. /stuff/code/MyFile
, oder hat eine nicht mit JavaScript, z. /stuff/code/load.do
. Der Inhaltstyp der Antwort wird auf text/html
festgelegt, obwohl es reine JavaScript-Quelle (text/javascript
) zurückgibt. Da ich keinen Zugriff auf den Servercode habe, muss ich einfach damit leben.Opera User-JS: Wie bekomme ich die rohe Serverantwort?
Das Problem ist jetzt, dass ich die Quelle mit Zeilennummern und so formatieren und es in Opera anzeigen möchte. Daher schrieb ich ein User-JS um auf AfterEvent.DOMContentLoaded
zu reagieren (auch ausprobiert AfterEvent.load
, selbe Sache). Es liest e.event.target.body.innerHTML
, um Zugriff auf den Körper zu erhalten, d. H. Den JavaScript-Code.
Das allein würde gut funktionieren, wenn die Quelle nur HTML-Tags oder Vergleichsoperatoren (<,>) nicht enthalten würde. Da es so ist, bekomme ich nie die Ausgabe, die ich will. Opera scheint eine interne Logik zu haben, die die text/html
-Antwort in ein eigenes Darstellungsformat umwandelt. Dies schließt z. eine CRLF, nachdem ein HTML-Tag entfernt wurde oder der Code zwischen zwei "übereinstimmenden" < und> (Vergleichsoperatoren!) zu einer einzelnen Zeile zusammengebrochen wird, wobei =""
nach jedem Wort dort eingegeben wird.
Und das ist, wo das Problem ist.
Wenn ich die gleiche URL ohne mein Benutzer-JS anfordere und dann die Quelle der "Seite" betrachte, sehe ich einen sauberen JavaScript-Code, der identisch ist mit dem, was der Server ausgesendet hat. Und darauf möchte ich zugreifen.
Wenn ich innerText
anstelle von innerHTML
verwende, streicht Opera die HTML-Tags aus, so dass die Datei sich auch vom Original unterscheidet.
Ich habe auch versucht, outerHTML
, outerText
und textContent
zu betrachten, aber sie haben alle die gleichen Probleme.
Ich weiß, dass Opera hier nichts falsch macht. Der Server sagt, es ist ein text/html
und Opera macht einfach, was es normalerweise mit einer text/html
-Art der Antwort tut.
Daher ist meine Frage: Gibt es eine Möglichkeit, die unberührte Antwort mit einem Benutzer-JS zu bekommen?
wenn Opera bekam text/javascript (oder anderen Text/* aber nicht text/html) Antwort, es umschließt noch in '
', und es gibt keine Möglichkeit, zu bestimmen, ob Antwort war text/javascript . –