2014-09-23 104 views
1

我真的很想知道,是否有任何API或方式来实现这一点。我想获得由浏览器生成的源代码。有没有一种方法来获取浏览器生成的HTML和CSS

在下面的代码初始colorElement的CSS ClassredFontClass但onload事件JavaScript来blueFontClass。其中所作的更改是非常明确的使用Firebug.I想要得到这种使用URL调用Java的响应。这是可能的吗?我不想要任何Javascript,但最终希望浏览器使用CSS生成HTML,这对于飞碟类型的PDF生成器非常有用。它们暂时不支持Javascript。

真正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> 

火狐Firebug的图片:

enter image description here

更新: 我需要在B如果我调用该特定文件的URL,则rowser会生成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

Chrome默认显示它们AFAIK。 – 2014-09-23 10:47:02

+0

我不知道它是如何在内部工作的,但至少有一些Selenium的驱动程序可以将整个DOM转储为HTML。 – chrylis 2014-09-23 11:06:06

+0

你们给出了一个很好的主意,但我希望它们能够使用一些API或类似的东西在java中生成。 – sunleo 2014-09-23 11:13:32

回答

0

你可以只发布页面的源代码返回到服务器端脚本。

在jQuery中你可以有一个功能,如:

function postGeneratedSource() { 
    var data = $('body')[0].outerHTML; 
    $.post('/path/to/script', data); 
} 

如果你不想让JS,那么你可以要么改变body的相关容器或以其他方式剥夺在服务器端脚本标记。

0

您可以通过使用此代码获取浏览器通过生成整个HTML代码:

var source = '<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>'; 
+0

感谢您的回复,最后这也是javascript我无法模拟从纯java代码! – sunleo 2014-09-24 02:31:44

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()); 
+0

这会给我们结果,因为我没有浏览器的帮助提到了预期的结果。 – sunleo 2014-09-24 02:23:27

相关问题