Я только что потратил 45 минут на эту «ПРОСТУЮ» проблему, пытаясь сделать так, как я хотел, чтобы она работала.
У меня было изображение внутри тега img, динамически генерируемое плагином jQuery Barcode
, который я должен был напечатать. Я хотел напечатать его в другом окне, а затем закрыть окно. Все это должно было произойти после того, как пользователь нажал кнопку внутри плагина jQuery Grid
, внутри диалога jQuery-UI
и примененного к нему расширения диалога jQuery-UI
.
Я корректировал все ответы, пока, наконец, не придумал это, может быть, это может кому-то помочь.
w = window.open(document.getElementById("UB-canvas").src);
w.onload = function () { w.print(); }
w.onbeforeunload = setTimeout(function () { w.close(); },500);
w.onafterprint = setTimeout(function () { w.close(); },500);
setTimeout
предназначен не только для дерьма и хихиканья, это единственный способ, которым я обнаружил, что Firefox 42
может воздействовать на эти функции. Он просто пропустил бы функции .close()
, пока я не добавил к нему точку останова, тогда он работал отлично. Поэтому я предполагаю, что он создал эти экземпляры окна, прежде чем он смог применить функцию события onbeforeload и функцию события onafterprint или что-то в этом роде.