2012-06-22 3 views
12

Следующий CSS влияет на то, будет ли страница печатать в портретном или альбомном по умолчанию.Может ли JavaScript изменить значение CSS @page?

@page { 
    size: landscape; 
} 

Я понимаю, что это работает только в очень ограниченном наборе браузеров и что пользователь может переопределить его. Это нормально; Я просто пытаюсь обеспечить хороший дефолт.

Это прекрасно работает как статическое значение в CSS, но я бы хотел динамически переключаться между пейзажем &, основанным на пользовательских вариантах. Можно ли использовать JavaScript для изменения этого значения?

+0

возможно дубликат [опции Отключение браузера печати (заголовки, поля) от страницы?] (Http: // stackoverflow.com/questions/1960939/disabling-browser-print-options-headers-footers-margins-from-page) –

+0

@ J-16SDiZ: Я так не думаю; Я просмотрел этот вопрос и ничего не вижу об изменении настройки динамически. – DNS

+0

@BNL: Не много; Я провел некоторое время, просматривая DOM, где я мог бы получить доступ к этому свойству, но ничего не мог найти. Я немного подумал об изменении самой таблицы стилей, смутно отвечающей ответам jasssonpet, но это было проблематично для меня в то время. – DNS

ответ

16

Один простой способ создать отдельный стиль для @Page и изменить его:

var cssPagedMedia = (function() { 
    var style = document.createElement('style'); 
    document.head.appendChild(style); 
    return function (rule) { 
     style.innerHTML = rule; 
    }; 
}()); 

cssPagedMedia.size = function (size) { 
    cssPagedMedia('@page {size: ' + size + '}'); 
}; 

cssPagedMedia.size('landscape'); 
+1

Я обычно жду несколько дней, чтобы отметить что-то как правильное, на случай, если кто-то еще придет с более глубоким пониманием, но это хороший, разумный подход, который просто работает; Спасибо. – DNS

+0

Это потрясающе. – CrazyTim

Смежные вопросы