J'écris un user-JS pour Opera. Il réagit à une demande qui n'a pas d'extension, par ex. /stuff/code/MyFile
, ou en a une qui n'est pas liée à JavaScript, par ex. /stuff/code/load.do
. Le type de contenu de la réponse est défini sur text/html
, même s'il renvoie une source JavaScript pure (text/javascript
). Comme je n'ai pas accès au code du serveur, je dois simplement vivre avec ça.Opera User-JS: comment obtenir la réponse du serveur brut?
Le problème est maintenant que je veux formater la source avec des numéros de ligne et autres et l'afficher dans Opera. Par conséquent, j'ai écrit un utilisateur-JS pour réagir sur AfterEvent.DOMContentLoaded
(également essayé AfterEvent.load
, même chose). Il lit e.event.target.body.innerHTML
pour accéder au corps, c'est-à-dire le code JavaScript.
Cela seul fonctionnerait bien, si seulement la source ne contiendrait pas de balises HTML ou d'opérateurs de comparaison (<,>). Comme c'est le cas, je n'ai jamais la sortie que je veux. Opera semble avoir une logique interne pour convertir la réponse text/html
en son propre format de représentation. Cela inclut par exemple un CRLF après un HTML-tag est enlevé ou du code entre deux "correspondants" < et> (opérateurs de comparaison!) sont croqués ensemble dans une seule ligne en appliquant =""
après chaque mot là-bas.
Et c'est là que le problème est.
Si je demande la même URL sans mon utilisateur JS, puis regarder la source de la "page", je vois un code JavaScript propre identique à ce que le serveur a envoyé. Et c'est ce que je veux avoir accès.
Si j'utilise innerText
au lieu de innerHTML
, Opera supprime également les balises HTML qui rendent le fichier différent de l'original. J'ai également essayé de regarder outerHTML
, outerText
et textContent
, mais ils ont tous les mêmes problèmes.
Je sais qu'Opera ne fait rien de mal ici. Le serveur dit que c'est un text/html
et Opera fait simplement ce qu'il fait d'habitude avec un text/html
-kind de réponse. Par conséquent, ma question est: est-il possible d'obtenir la réponse intacte avec un utilisateur-JS?
quand Opera a text/javascript (ou tout autre texte/* mais pas text/html) réponse, il renferme encore '
', et il n'y a aucun moyen de déterminer si la réponse était text/javascript . –