2011-10-25 3 views
3

私はWebアプリケーションの開発者です。Google ChromeでJavascriptおよびAJAXで生成されたコンテンツが印刷されない

Chromeは自分のJavascriptとAJAXで生成されたWebページを正しく表示しますが、(ネイティブ関数を使用して)それらを印刷してみると空白のページが表示されます。

他のブラウザでも印刷がうまくいきます。

私は、サーバーサイドで生成されたページをChromeで試して印刷しましたが、うまく印刷されました。

私のWebアプリケーションのWebページで何が間違っていますか?私は問題は、これらのページがJavascriptとAJAXによって動的に生成されることだと思います。
私は、Chromeでこれらのページを正しく保存することさえできないことを知りました(すべてのダイナミックHTMLは表示されません)。

私はGoogle Chrome 13.0.782.112です。
この問題をデバッグして修正するにはどうすればよいですか? 回避策はありますか? ダイナミックに生成されたコンテンツをGoogle Chromeで印刷するよう管理している人はいますか?

この問題は私を夢中にしています!

PS:私はきた...クローム14.0.835.202へのアップグレードが、問題はまだそこにある

+0

私は単純にやった

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

のようなものが完全に働いた[フィドル](http://jsfiddle.net/A8Ypg/)それは私のためにうまくいきます。違うコードを使っていますか? –

+0

ご覧になるためにいくつかのコードを投稿していただけますか? – user2890

答えて

2

:私のユーザーの一部は

UPDATE :-(Safariで同じ問題を報告しています私は実際にChromeでテストしていませんでしたが、まったく同じ問題を抱えていましたが(実際には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の両方で私の特定のプロジェクトの印刷が可能になりましたが、そのうちの1つがすでに最初に動作していて、もう1つは記憶していませんでした。私が現時点でテストするために引き出すことのできるプロジェクトではない)。これがChromeの問題を解決するかどうかはわかりませんが、試してみる価値はあります。

編集非常に申し訳ありませんが、私は完全に賛成です。私は古いコメントをもう一度読んだだけで、このソリューションは印刷とは関係がありませんでした。実際には、に保存すると、元の提供された文書のみが保存されるという問題を修正することでした。しかし、それは、それはショットの価値があるかどうかまだ疑問に思う。

+0

あなたは最高です、トレバー! 驚くばかり!私は幸せです! 皆さん、この回答に投票してください。私の質問はかなり曖昧で、コードは表示されませんでしたが、彼のスニペットは完全にスポットでした! – 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

トレバーの答えは完全にjQueryを使ってME-のために働いていた私は、テストを行った

関連する問題