我使用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>
像这样..我怎么能这样做????
答案 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操作以及它是否适用于浏览器)。
祝你好运!