2009-11-10 160 views
1

我使用java.net.URL和Input Streams获取字符串中的网页内容。如何在服务器端渲染javascript

这个问题我有我的JavaScript不呈现,我得到的,因为它是响应。

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

想这是写在HTML文件中的代码..现在我想,当我得到的字符串..的JavaScript应b呈现的网页内容..

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

这样的..如何我可以做到这一点?

+0

我已经GOOGLE了它,并发现服务器端JavaScript的概念。这是同样的事情吗? 。犀牛可以做这件事吗?如果可以的话。怎么样 ?? – 2009-11-10 09:09:29

+0

Rhino可以执行JavaScript,但没有HTML或DOM的概念,所以它不会知道'document'对象,并且它有一个'write()'方法。 – 2009-11-10 09:16:43

回答

1

JavaScript将不会由java.net.URL自动执行。带有内嵌JavaScript的HTML文件仅被视为任何其他纯文本文件,不以任何方式进行分析。没有构建DOM,没有执行JavaScript,没有应用CSS。你需要做的是使用类似于HtmlUnit的东西解析它。

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

0

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

在提到netscape.javascript.JSObject类实现eval方法可能是你在找什么(虽然我不知道,如果它需要DOM操作的照顾,如果它可以跨浏览器) 。

祝你好运!

+0

“Eval”是不够的,我认为。它可能会在“脚本”标签之间呈现js,但它不会触发“body onload ='blabla'”等事件。 – 2009-11-10 11:19:13