Używam kodu z odpowiedzi this, aby wydrukować oddzielną stronę bezpośrednio z przycisku drukowania. Użytkownik klika przycisk drukowania, a adres URL jest wysyłany do funkcji drukowania. Funkcja drukowania ładuje osobną stronę do elementu iframe display:none
i wypisuje iframe onLoad
. Działa w IE, Chrome, ale nie w Firefoksie. W firefox ładuje stronę do elementu div, ale nigdy nie drukuje lub otwiera okno dialogowe drukowania. Okazuje się, firefox nie drukuje iframe, jeśli jest ustawiony na display:none
jak poniżej:Firefox nie będzie drukował elementu iframe z wyświetlaczem: brak
<div id="printerDiv" style="display:none"></div>
Jest to oczekiwane zachowanie? Wszystkie inne przeglądarki drukują, myślę o zamieszczeniu w Bugzilli. Próbowałem trochę "trików" css, aby div nie wyświetlał się tam, gdzie użytkownik może je zobaczyć, ale zawsze jest w jakiś sposób widoczny. Obecnie używam poniżej CSS aby iframe niewidzialną:
#printerDiv iframe{
width:1px !important;
height:1px !important;
border:0 !important;
margin:0 !important;
}
Ale to marże nadal istnieją i pozostawić szczelinę 14px gdy iframe jest generowany. Czy jest jakiś sposób, aby element iframe nie był widoczny? przy wszystkich bez atrybutu display:none
? Jeszcze lepiej, czy jest jakiś sposób na zrobienie tego bez takiego hackowania?
Próbowałem nawet używać CSS do ustawiania iframe na display:block
@ media typów plików i display:none
dla ekranu, funkcja JS nadal nie będzie drukować.
Być może URL znajduje się w innej domenie. –
To nie jest fakt, że przekazuję link względny. Próbowałem bezwzględnego łącza, ale dostaje ten sam problem. –
Po prostu absolutnie umieść element iframe na stronie .. – GAgnew