Frage

Ich schreibe einige Benutzer-JS für Opera. Es reagiert auf eine Anfrage, die eine Erweiterung nicht haben, z.B. /stuff/code/MyFile oder hat man nicht im Zusammenhang JavaScript, z.B. /stuff/code/load.do. Der Inhaltstyp der Antwort auf text/html gesetzt, obwohl es reine JavaScript-Quelle (text/javascript) zurückgibt. Wie ich ich muss keinen Zugriff auf den Server-Code haben einfach damit leben.

Das Problem ist jetzt, dass ich die Quelle mit Zeilennummern formatieren und so und es in Opera anzuzeigen. Deshalb schrieb ich einige Benutzer-JS auf AfterEvent.DOMContentLoaded zu reagieren (auch versucht AfterEvent.load, die gleiche Sache). Es liest e.event.target.body.innerHTML zu erhalten Zugriff auf den Körper, das heißt der JavaScript-Code.

Das allein gut funktionieren würde, wenn nur die Quelle nicht HTML-Tags oder Vergleichsoperator enthalten würde (<,>). Da es der Fall ist, bekomme ich nie die Ausgabe ich will. Opera scheint eine gewisse innere Logik zu haben, die text/html-Antwort in sein eigenen Darstellungsformat zu konvertieren. Dies beinhaltet, dass z.B. ein CRLF nach einer HTML-Tag entfernt oder Code zwischen zwei „matching“ (Vergleichsoperatoren!) werden zusammen in einer einzigen Zeile knirschte Anwendung ="" nach jedem Wort drin.

Und das ist, wo das Problem ist.

Wenn ich die gleiche URL anfordern, ohne mein Benutzer-JS und dann an der Quelle der „Seite“ sehe ich sehe einen sauberen JavaScript-Code identisch zu dem, was der Server gesendet. Und das ist, was ich will, um Zugang zu erhalten.

Wenn ich innerText statt innerHTML verwenden, Opera abstreift die HTML-Tags, um die Datei anders als das Original zu machen, auch.

Ich habe auch versucht bei outerHTML, outerText und textContent zu sehen, aber sie alle haben die gleichen Probleme.

Ich weiß, dass Opera nichts falsch macht hier. Der Server sagt, es ist ein text/html und Opera einfach tut, was es in der Regel mit einer text/html-Art von Reaktion des Fall ist.

Daher meine Frage ist: Gibt es eine Möglichkeit die unberührte Reaktion mit einem Benutzer-JS

zu bekommen
War es hilfreich?

Lösung

Es gibt keine Möglichkeit, die vorge analysiert Markup von JS zuzugreifen. Der einzige Weg, dies zu tun wäre, um XMLHttpRequest zu verwenden, um den Inhalt selbst zu beantragen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top