Domanda

Sto scrivendo qualche utente-JS per Opera. Esso reagisce su una richiesta che non ha un'estensione, ad esempio /stuff/code/MyFile, o è non relative a JavaScript, per esempio /stuff/code/load.do. Il tipo di contenuto della risposta è impostata su text/html, anche se restituisce pura sorgente JavaScript (text/javascript). Come io non ho accesso al codice del server ho semplicemente convivere con questo.

Il problema ora è che voglio formattare la fonte con numeri di riga e tale e visualizzarlo all'interno Opera. Pertanto, ho scritto alcuni user-JS per reagire sul AfterEvent.DOMContentLoaded (AfterEvent.load anche provato, la stessa cosa). Si legge e.event.target.body.innerHTML per ottenere l'accesso al corpo, vale a dire il JavaScript-codice.

Che da sola avrebbe funzionato bene, se solo la fonte non conterrebbe HTML-tag o operatori di confronto (<,>). Dal momento che lo fa, non ho mai ottenere l'output che voglio. Opera sembra avere qualche logica interna per convertire il text/html-risposta nel proprio formato di rappresentazione. Ciò include che ad esempio un CRLF dopo una HTML-tag viene rimosso o codice tra due "matching" (operatori di confronto!) sono scricchiolava insieme in una sola linea applicando ="" dopo ogni parola in là.

E questo è dove il problema è.

Se io chiedo lo stesso URL senza il mio user-JS e poi guardare il sorgente della pagina "" Vedo un JavaScript-codice pulito identico a quello che il server ha inviato fuori. E questo è quello che voglio ottenere l'accesso.

Se uso innerText invece di innerHTML, Opera estrae i tag HTML rendendo il file diverso da quello originale, anche.

Ho anche cercato di guardare al outerHTML, outerText e textContent, ma tutti hanno gli stessi problemi.

So che Opera non fa niente di male qui. Il server dice che è un text/html e Opera fa semplicemente quello che fa di solito con un text/html-tipo di risposta.

Quindi, la mia domanda è:? C'è un modo per ottenere la risposta incontaminata, con un utente-JS

È stato utile?

Soluzione

Ci non è alcun modo per accedere alla marcatura pre-analizzati da JS. L'unico modo per farlo sarebbe quello di utilizzare XMLHttpRequest per richiedere il contenuto manualmente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top