2013-01-22 11 views
19

に開かれたときに2つのファイルがあります:index.htmlprint.htmlGoogle ChromeのブロックAJAX要求印刷プレビューが子ウィンドウ

は最初のものは、単純なコマンドを使用してprint.htmlを開くボタンが含まれています

window.open("print.html", "_blank", "menubar=yes,toolbar=yes,status,scrollbars,resizable"); 

print.htmlにのみ含まれてい印刷プレビューダイアログを開く1つのボタン:

<button onclick="window.print();"> 

問題点rs印刷プレビューダイアログが開いたとき。この場合、index.html上のアクション、つまりajaxリクエストを開始するotherファイルのアクションは一時的にブロックされ、キューに入れられます。プレビューが閉じられているときだけ、ブラウザはすべてのリクエストを起動します。

Google Chrome(24.0.1312.52 m)でのみ表示されます。

これはChromeのバグであることを誰でも確認できますか?

+1

私が間違っている場合は私を修正しますが、これは私にはバグのようには聞こえません。印刷プレビューはモーダルダイアログではありませんか?オープンしている間にAjaxがなぜ発砲する必要がありますか? –

+2

index.htmlとprint.htmlは2つの異なるウィンドウです。 indexはprint.htmlにwindow.open.Printプレビューを使用して開いています。なぜindex.htmlがブロックされているのですか?印刷ウィンドウがブロックされても問題ありません。 –

+0

ああ、そうです。それは確かに奇妙に聞こえる。 –

答えて

0

Chromeで同様の問題が発生しました。セキュリティポリシーによってローカルファイルにアクセスできません。 私はAJAX呼び出しを作っていたとき、私は私が知っていることから、このエラー

XMLHttpRequest cannot load file:///*. Origin null is not allowed by Access-Control-Allow-Origin. 

を得る - あなたはのparamsでChromeを起動する必要があります。

--allow-file-access-from-files 

はそれがお役に立てば幸いです。

+0

Johnと同じ問題があるので、私は '--allow-file-access-from-files'で解決できないと思います。/ – stuXnet

0

.batファイルを作成するには、次の行を記述します。 1行目はChromeアプリケーションのパスで、それを開きます。これで、このChromeで確認できます。

cd "C:\Program Files (x86)\Google\Chrome\Application" 
chrome --allow-file-access-from-files --disable-web-security 
2

DOM内のタグがある場合に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

これはChromeのバージョン37.0でも同様の問題が発生しています.2062.103m。あなたのソリューションは一度しか働かなかった。同じページインスタンスで再試行し、印刷ダイアログがwindow.openされたページから開かれませんでした。私はそれが良い試みであり、おそらく働くことができたので、それを打ちました。 –

+0

興味のある方は[ここ](https://code.google.com/p/chromium/issues/detail?id=359627)は、バグの報告です... Chromeのv34とv35で修正されたとのことですが、それ以来、再び現れました。 – incutonez

+0

私は同じ問題を抱えていますが、別々のタブが2つあります(http://stackoverflow.com/questions/42932835/angular-js-print-tab-blocks-http-request-google-chromeを参照)。私のケースでこの回避策を使用するにはどうすればよいですか? – molerat

1

サーバーがORIGINヘッダーを追加していません。 .htaccessに追加する必要があります。例:あなたは、Apache上mod_headersをインストールし、.htaccessでそれを設定する必要が

Header add Access-Control-Allow-Origin "*" 
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type" 
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS" 

または(あなたがhtmlファイルでPHPを使用することができる場合)あなたはprint.html上のPHPでそれを追加することができ

header ("Access-Control-Allow-Origin: *"); 
header ("Access-Control-Allow-Headers: origin, x-requested-with, content-type"); 
header ("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS"); 
1

Header add Access-Control-Allow-Origin "*" 
関連する問題