我真的很想知道,有没有API或方法来实现这一点。我想获得浏览器生成的源代码。
在下面的代码中,colorElement的初始CSS Class
为redFontClass
,但onload javascript已更改为blueFontClass
。使用Firebug非常清楚。我希望使用URL获取此类响应用Java调用。这可能吗?。我不想要任何Javascript,但最终想要使用CSS浏览器生成的HTML,这对于Flying-Saucer类型的PDF生成器非常有用。他们暂时不支持Javascripts。
真实HTML:
<html>
<head>
<style>
.redFontClass
{
color : red;
}
.blueFontClass
{
color : blue;
}
</style>
<script language="javascript">
function changeColor()
{
document.getElementById('colorElement').className='blueFontClass';
alert("asdfsd");
}
</script>
</head>
<body onload="javascript:changeColor();">
<b>This Should come as <span class = "redFontClass" id="colorElement">Red</span> </b>
</body>
</html>
FireFox Firebug Image:
更新 如果我调用该特定文件的URL,我需要浏览器生成的HTML。 因为我将从服务器端Java代码中调用它,而不是使用浏览器等任何clinet端应用程序。
浏览器生成的HTML:
<html><head>
<style>
.redFontClass
{
color : red;
}
.blueFontClass
{
color : blue;
}
</style>
<script language="javascript">
function changeColor()
{
document.getElementById('colorElement').className='blueFontClass';
alert("asdfsd");
}
</script>
</head>
<body onload="javascript:changeColor();">
<b>This Should come as <span id="colorElement" class="blueFontClass">Red</span> </b>
</body></html>
答案 0 :(得分:0)
您可以将页面源发布回服务器端脚本。
在jQuery中,您可以使用以下函数:
function postGeneratedSource() {
var data = $('body')[0].outerHTML;
$.post('/path/to/script', data);
}
如果您不想要JS,那么您可以更改相关容器的body
或以其他方式删除服务器端的脚本标记。
答案 1 :(得分:0)
您可以使用以下代码获取浏览器生成的完整HTML代码:
var source = '<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>';
答案 2 :(得分:0)
你使用以下代码来获取HTML。
String url = "http://www.google.com/search?q=developer";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
//add reuqest header
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", "Mozilla");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
//print result
System.out.println("hi"+response.toString());