Question

i m obtenir un contenu de la page Web dans une chaîne en utilisant java.net.URL et les flux d'entrée.

Le problème que je ne suis pas avoir que mon javascript est pas rendu et je ne suis pas mettre le car il est la réponse.

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

supposons que c'est le code écrit dans le fichier HTML .. maintenant je veux quand je reçois le contenu de la page Web dans la chaîne .. le javascript doit b .. rendu

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

comme ça .. comment je peux le faire ????

Était-ce utile?

La solution

Le code JavaScript ne sera pas exécuté automagiquement par java.net.URL. Le fichier HTML avec le JavaScript en ligne est tout simplement considéré comme tout autre fichier de texte brut et ne sont pas analysées en aucune façon. Non DOM est construit, pas JavaScript est exécuté, pas CSS appliquée. Ce que vous devez faire pour obtenir le JavaScript est exécuté pour analyser avec quelque chose comme HtmlUnit .

Si vous avez le contrôle du HTML, cependant, je vous recommande de remplacer simplement les déclarations de document.write() avec HTML statique. Une alternative très rudimentaire est bien sûr de le faire une recherche sur le document\.write\(([^\)]+)\);? d'expression régulière et le remplacer par le premier match capturé.

Autres conseils

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

La méthode eval dans la classe netscape.javascript.JSObject mentionné peut-être ce que vous cherchez (si je ne suis pas sûr si elle prend en charge la manipulation du DOM et si cela fonctionne sur les navigateurs).

Bonne chance!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top