Подтвердить что ты не робот

Google Chrome блокирует запросы ajax при открытии предварительного просмотра в дочернем окне

Есть 2 файла: index.html и print.html

Первый содержит кнопку, которая открывает print.html с помощью простой команды:

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

print.html содержит только одну кнопку, открывающую диалоговое окно предварительного просмотра:

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

Проблема возникает при открытии диалогового окна предварительного просмотра. В этом случае любое действие на index.html, то есть другой файл, инициирующий запрос ajax, временно блокируется и помещается в очередь. И только тогда, когда предварительный просмотр закрыт, браузер запускает все запросы.

Я вижу это только в Google Chrome (24.0.1312.52 м).

Кто-нибудь может подтвердить, что это ошибка Chrome?

4b9b3361

Ответ 1

есть ошибка Chrome, где window.print() не работает, когда в DOM есть тег. Это можно решить, вызвав эту функцию:

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;
}

Ответ 2

Ваш сервер не добавил заголовки ORIGIN. Вам нужно добавить его в .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"

Или вы можете добавить его в PHP на print.html(если вы можете использовать PHP в html файлах)

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");

Ответ 3

Вам нужно установить mod_headers на Apache и установить его на .htaccess

Header add Access-Control-Allow-Origin "*"

Ответ 4

У меня была аналогичная проблема с Chrome - из-за политики безопасности он не может обращаться к локальным файлам. Когда я делаю вызов AJAX, я получаю эту ошибку

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

Из того, что я знаю, вы должны запустить Chrome с параметрами:

--allow-file-access-from-files

Надеюсь, что это поможет.

Ответ 5

Создайте файл .bat, напишите следующие строки. 1-я строка - это путь вашего приложения Chrome, а затем откройте его. Теперь вы можете проверить этот Chrome.

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