2014-09-23 198 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

相關問題