как сделать JavaScript на стороне сервера - PullRequest
1 голос
/ 10 ноября 2009

Я получаю содержимое веб-страницы в виде строки, используя java.net.URL и Input Streams.

проблема в том, что мой javascript не рендерится, и я получаю ответ как есть.

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

предположим, что это код, написанный в HTML-файле ... теперь я хочу, когда я получаю содержимое веб-страницы в виде строки ... javascript должен быть визуализирован ..

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

вот так .. как я могу это сделать ????

Ответы [ 2 ]

1 голос
/ 10 ноября 2009

JavaScript не будет автоматически выполняться java.net.URL. HTML-файл со встроенным JavaScript просто виден как любой другой текстовый файл и не анализируется никоим образом. DOM не создается, JavaScript не выполняется, CSS не применяется. Чтобы запустить JavaScript, вам нужно проанализировать что-то вроде HtmlUnit .

Если у вас есть контроль над HTML, я бы порекомендовал вам просто заменить операторы document.write() на статический HTML. Конечно, очень элементарной альтернативой является просто поиск по регулярному выражению document\.write\(([^\)]+)\);? и замена его на первое захваченное совпадение.

0 голосов
/ 10 ноября 2009

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

Метод eval в упомянутом классе netscape.javascript.JSObject может быть тем, что вы ищете (хотя я не уверен, что он заботится о манипулировании DOM и работает ли он в разных браузерах).

Удачи!

...