1

我通过使用 java.net.URL 和输入流在字符串中获取网页内容。

我的问题是我的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>

像这样..我怎么能这样做????

4

2 回答 2

1

JavaScript 不会由 java.net.URL 自动执行。带有内联 JavaScript 的 HTML 文件被视为任何其他纯文本文件,不会以任何方式进行解析。没有构建 DOM,没有执行 JavaScript,没有应用 CSS。要执行 JavaScript,您需要做的是用HtmlUnit之类的东西对其进行解析。

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

于 2009-11-10T09:15:46.867 回答
0

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

提到的 netscape.javascript.JSObject 类中的 eval 方法可能是您正在寻找的方法(尽管我不确定它是否负责 DOM 操作以及是否可以跨浏览器工作)。

祝你好运!

于 2009-11-10T09:52:39.357 回答