2011-10-25 56 views
3

我是一個web應用程序的開發人員。谷歌瀏覽器不打印我的Javascript和AJAX生成的內容

Chrome瀏覽器正確顯示我的Javascript和AJAX生成的網頁,但是當我嘗試打印它們時(通過它的本機功能),我得到一個空白頁面。

打印在其他瀏覽器上工作得很好。

我試過並用Chrome打印服務器端生成的頁面,它們打印得很好。

我的web應用程序的網頁有什麼問題?我認爲問題是這些頁面是由Javascript和AJAX動態生成的。
我在說,因爲我剛剛發現我甚至無法使用Chrome正確保存這些頁面(所有動態HTML都未顯示)。

我在Google Chrome 13.0.782.112上。
如何調試和解決此問題? 有什麼解決方法嗎? 是否有人管理使用Google Chrome瀏覽器打印動態生成的內容?

這個問題讓我瘋狂!

PS:我的一些用戶都在Safari上報告了同樣的問題:-(

UPDATE:沒有升級到Chrome 14.0.835.202但問題仍然存在...

+0

我只是做了一個試驗[小提琴](http://jsfiddle.net/A8Ypg/)它對我來說工作得很好。你使用的是不同的代碼嗎? –

+0

你可以請張貼一些代碼給我們看看嗎? – user2890

回答

2

我已經(儘管我沒有用Chrome進行實際測試),但在某些瀏覽器上(我不記得哪些是非正式的 - 但是它是IE或FF),所有添加到Chrome中的內容由JavaScript打印的DOM不會被打印,實際打印的是提供給瀏覽器的原始文檔。

我成功地解決了這個使用下面的JavaScript函數:

function docw() 
{ 
    var doct = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" 
    \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"; 
    document.write(doct + document.getElementsByTagName('html')[0].innerHTML); 
} 

當JavaScript頁面操作完成這就是所謂的。它實際上讀取整個DOM,然後使用document.write將整個文檔重新寫入自身。這現在可以在IE和FireFox上打印我的特定項目,但我確信其中一個已經在第一個地方工作了,另一個沒有(記不清哪個是內存,而且它是不是我現在可以測試的項目)。這是否能解決Chrome中的問題我不知道,但值得一試。

編輯非常抱歉,但我是一個完整的pleb。我只是重新閱讀我的舊評論,這個解決方案與打印無關;它實際上是修復了一個問題,其中只有原始送達的文檔將被保存,當保存到文件時。不過,那就是說,我仍然懷疑它是否值得一試。

+0

你是最棒的,Trevor! 太棒了!我很高興! 請大家投票回答這個問題:我的問題很含糊,我沒有顯示任何代碼,但他的代碼片段完全是現貨! – dan

+1

哈,表明它值得偶爾做一個長鏡頭!很高興幫助! – Trevor

2

這幫了我一個相關的問題 - 如何查看/保存動態生成的HTML本身。我想出了以下書籤。

javascript:(function(){document.write('<pre>'+(document.getElementsByTagName('html')[0].innerHTML.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'))+'</pre>')})() 

我運行這個和「全選」 /複製,然後(在Linux中)做「XCLIP退房手續」,以大量的剪貼板數據直接到文件中。

2

Trevor的答案完全工作了我 - 與jQuery,我只是不喜歡的東西

$("html").html $("html").html() 

工作完全