如何在服务器端呈现javascript

时间:2009-11-10 09:06:04

标签: java javascript serverside-javascript

我使用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 个答案:

答案 0 :(得分:1)

java.net.URL不会自动执行JavaScript。带有内联JavaScript的HTML文件只是看作任何其他纯文本文件,不会以任何方式解析。没有构建DOM,没有执行JavaScript,也没有应用CSS。要执行JavaScript,您需要做的就是使用HtmlUnit等解析它。

但是,如果您可以控制HTML,我建议您只使用静态HTML替换document.write()语句。一个非常基本的选择当然是只对正则表达式document\.write\(([^\)]+)\);?进行搜索,并将其替换为第一个捕获的匹配。

答案 1 :(得分:0)

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

上面提到的netscape.javascript.JSObject类中的eval方法可能就是你要找的东西(虽然我不确定它是否会处理DOM操作以及它是否适用于浏览器)。

祝你好运!