有没有办法获得浏览器生成的HTML和CSS

时间:2014-09-23 10:42:48

标签: java javascript html css cross-browser

我真的很想知道,有没有API或方法来实现这一点。我想获得浏览器生成的源代码。

在下面的代码中,colorElement的初始CSS ClassredFontClass,但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:

enter image description here

更新 如果我调用该特定文件的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>

3 个答案:

答案 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());