Domanda

I m ottenendo un contenuto della pagina web in una stringa utilizzando java.net.URL e flussi di ingresso.

il problema i m avere che il mio JavaScript non viene eseguito il rendering e I m ottenendo il come è la risposta.

<html>
 <head></head>
 <body>
  <script>
   document.write("<h1>hello world!</h1>");
  </script>
 </body>
</html>

supponiamo che questo è il codice scritto in file HTML .. ora voglio quando ottengo il contenuto della pagina Web nella stringa .. il javascript se B ha reso ..

<html>
 <head></head>
 <body>
   <h1>Hello World!</h1>
 </body>
</html>

come questo .. come posso farlo ????

È stato utile?

Soluzione

non verrà eseguito il JavaScript automagicamente da java.net.URL. Il file HTML con la linea JavaScript è appena visto come qualsiasi altro file di testo e non è analizzato in alcun modo. No DOM è costruito, non viene eseguito alcun JavaScript, CSS non applicata. Quello che dovete fare per ottenere eseguito il codice JavaScript è quello di analizzarlo con qualcosa come HtmlUnit .

Se avete il controllo del codice HTML, però, mi consiglia di sostituire solo le dichiarazioni document.write() con HTML statico. Un'alternativa molto rudimentale è, naturalmente, di fare solo una ricerca sul regolare document\.write\(([^\)]+)\);? espressione e di sostituirlo con il primo match catturato.

Altri suggerimenti

https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference / LiveConnect / JSObject

Il metodo eval nella classe netscape.javascript.JSObject citato potrebbe essere quello che state cercando (anche se non sono sicuro se si prende cura di manipolazione del DOM e se funziona attraverso i browser).

In bocca al lupo!

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