2013-09-04 20 views
20

私は本当に奇妙な問題に直面しています。私はJavaScriptファイルからwindow.print()を呼び出しています。これはSafari、IE、Firefoxでうまくいきます.2時間前まではChromeでも動作しました。 (バージョン29.0.1547.57)Chrome:window.print()印刷ダイアログは、ページのリロード後にのみ開きます(javascript)

javascriptファイルには何も変更されていませんでした(実際には私はいくつかのコメントを削除しました...)が、今起こっていることは本当に奇妙です:Chromeでは、印刷ダイアログが開きませんwindow.print()が呼び出されたとき。何も起こりません。しかし、リロードを押すと、すぐに印刷ダイアログが開きます。

他のブラウザの動作は変更されませんでした。そして、Chromeでデバッグしている間に、window.print()が期待通りに呼び出され、それ以降スクリプトが実行されることがわかります。リロードを押すまで、印刷ダイアログのみが表示されます。

このようなことを体験したことがありますか?私もsetTimeout()でwindow.print()を呼び出そうとしましたが、これは何も変わりませんでした。印刷されるページの内容をデバッグすると、完全に読み込まれたように見えます。

私はお手数ですが、調査中は何も見つかりませんでした。どんな助けもありがとう!

ありがとうございました!

+1

これは、window.print()を呼び出したときにネットワーク要求が開いていることが原因ですか? https://code.google.com/p/chromium/issues/detail?id=285690および/またはhttp://stackoverflow.com/questions/14961769/javascript-window-print-intermittently-working-in-chromeをご覧ください。同様のトラブルのために。 – natevw

+0

これを解決するには、プロジェクトフォルダに 'jquery.min.map'を追加します。保留中のファイルについては、「開発者ツール」の「ネットワーク」タブで確認してください。適切なパスを指定するか削除すると問題が解決されるはずです – rafaelcastrocouto

答えて

0

あなたのページにはビデオ要素があることがほとんどの場合、おそらくMP4でしょう。

このビデオを無効にするか、代わりにOGVビデオを使用すると、印刷がうまくいくはずです。 Chromeのビデオ実装の制限により、Chrome自体のバグです。手動でCTRL-P/CMD-pでユーザーが印刷、印刷機能が正しく

http://code.google.com/p/chromium/issues/detail?id=141633

・ホープ、この場合に役立ちます:)

+1

ご回答ありがとうございます!これは解決策ではなく、コールの発注に問題がありました。 (私はまだそれを理解していません....) – oskar1983

+0

あなたは@ oskar1983を修正するために何をしましたか? – Clayton

+0

@Oscar - 動画タグがある場合は、動画コンテンツもOGV形式でアップロードしてください。これはあなたの問題を解決するでしょう。 :) – Wasiim

2

私はクロームとまったく同じ問題を抱えていることに注意することも重要です。ページを手動でリロードする必要があります。

7

私の経験から、これはバックグラウンドトラフィックが継続していることが原因です。 Ajax呼び出しなどを使用して、そのページが完全に読み込まれたことをChromeが感じないようにします。リロードによってすべてのトラフィックが中断され、印刷ダイアログがポップアップします。 これは、BrowserLinkがバックグラウンドで絶え間なく離れているVisual Studio 2013の特有の問題です。 これは、以下の設定を経由してBrowserLinkを無効にすることでテストすることができます。

<configuration> 
    <appSettings> 
     <add key="vs:EnableBrowserLink" value="false"/> 
    </appSettings> 
</configuration> 
+0

これは救命救助者だった - ありがとう! – user158017

+0

これは、私が最終的にこの答えを見出すまで、私の年齢を悩ませています。私の場合、これはVS2013のデバッグモードでのみ発生するので、これは最初の答えより優れた解決策です。したがって、私の公開サイトは、VSから実行されていない場合、問題はありません。 – Neville

14

Wasiimは右である、DOMで<video>タグがある場合にwindow.print()が動作しないクロームのバグがあります。

function printPage() { 
    window.print(); 

    //workaround for Chrome bug - https://code.google.com/p/chromium/issues/detail?id=141633 
    if (window.stop) { 
     location.reload(); //triggering unload (e.g. reloading the page) makes the print dialog appear 
     window.stop(); //immediately stop reloading 
    } 
    return false; 
} 
+0

スマートな動きの停止。好奇心が強い、あなたはどのようにしてリロードを止めることができるのでしょうか?自分自身、私はリロードを思いついて、問題を解決済みとマークしているかもしれません。 – Martin

+1

@Martinでは、基本的には単にリロードするだけで問題は解決しますが、Printダイアログが閉じられると、ページがリロードされます。だから私は 'window.stop'を使って再ロードするのをやめようと考えました。 – noypiscripter

2

誰かが誰かがVS2013をChromeで使用している場合、この問題はBrowserLinkの機能によって発生します。

see SO answer here

0

Safariでも同様の動作です。バックグラウンドで開かれたHTTPリクエスト()によって引き起こされるのはです。

HTTPリクエストが進行中の場合、window.print()は正常に実行されますが、ダイアログは開かれません。

あなたは(サーバプッシュ用)ロングポーリングを使用する場合あなたは、この問題を持っています。クライアントはすでにHTTP接続を長時間開いているため、window.print()は決して動作しません。

関連する問題