Ошибка could not load the source for javascript в firefox при открытии всплывающего окна, в чем проблема?

Имеется функционал, который позволяет по нажатию на ссылку открывает в новом окне пдф файл и выводит его на печать. В хроме все работает прекрасно, в отличии от файрфокса.

Код и его использование:
var popupURL = "";
function ShowPopup() {
    var popup = window.open(popupURL, null, 'toolbar=0, location=0, directories=0, status=0, menubar=0, scrollbars=0, resizable=0, width=600, height=800');
    popup.focus();
    popup.print();
}

<a href="javascript: popupURL='{% url "exchange" obj.pk %}?pdf=1'; ShowPopup();" title="{% trans "pdf" %}">pdf</a>


Ошибка появляется после выполнения window.open, текст ошибки:
Error loading source:
Could not load the source for javascript:%20popupURL='/exchange/234?pdf=1';%20ShowPopup();.
[Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIChannel.asyncOpen]"

Как это все выглядит в браузере:
1. Открывается новое пустое окно с лоадером.
2. Открывается окно печати. Если попробовать распечатать, будет пустой лист.
3. Если закрыть окно печати, контент в первом окне прогружается.

С чем может быть связана данная проблема и есть ли какието другие методы отправки на печать?
  • Вопрос задан
  • 3008 просмотров
Решения вопроса 1
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Когда уже все поймут, что javascript в ссылках — это плохо, плохо, плохо.
Что открывать новые окна, когда это не нужно, — это плохо, плохо, плохо.
Что писать onclick — это ...

К тому же, PDF откроется встроенным в браузер плагином, в котором (невероятно!) есть функции сохранения, масштаба, печати и ещё парочка. Зачем их нужно дублировать?

<a href="и_тут_реальная_ссылка_на_pdf" rel="alternate" type="application/pdf">pdf</a>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Serhioromano
@Serhioromano
Web Developer
Убери пробел после javascript:

HTML

<a href="javascript:ShowPopup('{% obj.pk %}');" title="{% trans "pdf" %}">pdf</a>


JS

function ShowPopup(url) {
    var popup = window.open('/exchange/' + url + '?pdf=1', null, 'toolbar=0, 
         location=0, directories=0, status=0, menubar=0, scrollbars=0, 
         resizable=0, width=600, height=800');
    popup.focus();
    popup.onload = function(){
        popup.print();
    } 
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы