Pregunta

Estoy escribiendo algún usuario-JS para Opera. Reacciona en una solicitud que no tiene una extensión, por ejemplo, /stuff/code/MyFile, o ha uno no relacionado con JavaScript, por ejemplo /stuff/code/load.do. El tipo de contenido de la respuesta se establece en text/html, a pesar de que vuelva la fuente de JavaScript puro (text/javascript). Como no tengo acceso al código de servidor que simplemente tienen que vivir con esto.

El problema ahora es que quiero dar formato a la fuente con números de línea y tal y mostrarlo dentro de Opera. Por lo tanto, escribí algunos usuarios-JS para reaccionar en AfterEvent.DOMContentLoaded (AfterEvent.load también intentó, lo mismo). Se lee e.event.target.body.innerHTML para obtener acceso al cuerpo, es decir, el JavaScript de código.

Eso por sí solo podría funcionar muy bien, aunque sólo sea la fuente no contendría etiquetas HTML u operadores de comparación (<,>). Desde que hace, nunca consigo la salida que quiero. Opera parece tener cierta lógica interna para convertir el text/html-respuesta en su propio formato de representación. Esto incluye que, por ejemplo, un CRLF después de una etiqueta HTML se elimina o código entre dos "coincidente" (operadores de comparación!) se crujía juntos en una sola línea de la aplicación de ="" después de cada palabra en allí.

Y ahí es donde está el problema.

Si solicito la misma URL sin mi usuario en JS y luego miro a la fuente de la "página" Veo una limpieza de código JavaScript idéntica a la que el servidor envía. Y esto es lo que quiero conseguir acceso a.

Si utilizo innerText en lugar de innerHTML, Opera despoja a cabo las etiquetas HTML que hacen el archivo diferente a la original, también.

También trató de mirar a outerHTML, outerText y textContent, pero todos ellos tienen los mismos problemas.

Sé que Opera no hacen mal cualquier cosa aquí. El servidor dice que es un text/html y Opera, simplemente hace lo que se suele hacer con un text/html-tipo de respuesta.

Por lo tanto, mi pregunta es: ¿hay alguna manera de obtener la respuesta sin tocar con un usuario-JS

¿Fue útil?

Solución

No hay ninguna manera de acceder al marcado previamente analizada desde JS. La única manera de hacerlo sería utilizar XMLHttpRequest para solicitar el contenido usted mismo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top