22

私は本当に奇妙な問題に直面しています。javascript ファイルから window.print() を呼び出しています。これは Safari、IE、Firefox で正常に動作しています...そして 2 時間前までは Chrome でも動作していました。(バージョン 29.0.1547.57)

javascript ファイルの重要な部分は何も変更していません (実際には、いくつかのコメントを削除しただけです...)。何も起こりません。しかし、リロードを押すと、印刷ダイアログがすぐに開きます。

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

誰もそのようなことを経験したことがありますか?また、setTimeout() で window.print() を呼び出そうとしましたが、これは何も変更しませんでした。印刷されるページのコンテンツをデバッグすると、完全にロードされているように見えます。

申し訳ありませんが、調査中に何も見つかりませんでした。どんな助けでも大歓迎です!

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

4

6 に答える 6

14

Wasiim の言うとおり、DOM にタグwindow.print()があると Chrome が機能しないというバグがあります。<video>この関数を呼び出すことで解決しました:

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;
}
于 2014-03-25T22:01:15.930 に答える
7

私の経験では、これは ajax 呼び出しなどの継続的なバックグラウンド トラフィックが原因であり、Chrome がそのページが完全に読み込まれたと感じるのを妨げています。リロードによりすべてのトラフィックが中断されるため、印刷ダイアログがポップアップします。これは、 BrowserLinkがバックグラウンドで継続的にカチカチ音をたてるVisual Studio 2013 の特定の問題です。これは、以下の設定で BrowserLink を無効にすることでテストできます。

<configuration>
    <appSettings>
        <add key="vs:EnableBrowserLink" value="false"/>
    </appSettings>
</configuration>
于 2014-03-17T13:45:05.813 に答える
2

Chromeでもまったく同じ問題があります。ページを手動でリロードする必要があります。

    <a href="javascript:window.print();window.location.reload()">Print</a> 
于 2013-10-29T12:49:49.680 に答える