2009-11-10 3 views
1

Я получаю содержимое веб-страницы в строке с помощью java.net.URL и входных потоков.Как визуализировать javascript на стороне сервера

проблема, я имею, что мой 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> 

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

+0

У меня есть googled и нашел концепцию серверной части javascript. это то же самое? , может Rhino делает эту вещь? если это возможно. как ?? –

+0

Rhino может выполнить JavaScript, но не имеет понятия afaik HTML или DOM, поэтому он не будет знать о объекте 'document' и что он имеет метод write(). –

ответ

1

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

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

0

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

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

Удачи вам!

+0

«Eval» недостаточно, я думаю. Он может отображать js между тегами «script», но он не может запускать такие события, как «body onload = 'blabla» и т. Д. –

Смежные вопросы