2012-06-22 24 views
12

Aşağıdaki CSS, bir sayfanın varsayılan olarak dikey veya yatay olarak yazdırılıp yazdırılmayacağını etkiler.JavaScript, @page CSS değerini değiştirebilir mi?

@page { 
    size: landscape; 
} 

Bu sadece tarayıcıların çok sınırlı sette çalışıyor ve kullanıcı tarafından geçersiz kılabileceğini biliyoruz. Sorun yok; Ben sadece iyi bir varsayılan sağlamaya çalışıyorum.

Bu, CSS'de statik bir değer olarak iyi çalışır, ancak kullanıcı seçimlerine bağlı olarak portre & manzara arasında dinamik olarak geçiş yapmak isterim. Bu değeri değiştirmek için JavaScript kullanmak mümkün mü?

+0

[devre dışı bırakılması, tarayıcı baskı seçenekleri sayfasından (üstbilgi, altbilgi, marjlar)?] (Http olası yinelenen: // stackoverflow.com/questions/1960939/disabling-browser-print-options-headers-footers-margins-from-page) –

+0

@ J-16SDiZ: Ben öyle düşünmüyorum; Bu soruya bir göz attım ve ayarı dinamik olarak değiştirmeyle ilgili bir şey göremedim. – DNS

+0

@BNL: Fazla değil; Bu mülke erişebildiğim için DOM'dan biraz zaman geçirdim, ama hiçbir şey bulamadım. Jasssonpet'in cevabının çizgileri boyunca belirsiz bir şekilde stil sayfasını değiştirmeyi düşündüm, ama o zamanlar benim için sorunlu görünüyordu. – DNS

cevap

16

basit bir yol @page için ayrı bir stil oluşturmak ve bunu değiştirmek için:

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

Genelde bir şeyleri doğru olarak işaretlemek için birkaç gün beklerim, çünkü başka bir kişi daha fazla içgörü ile gelir, ancak bu sadece işe yarayan iyi ve mantıklı bir yaklaşımdır; teşekkür ederim. – DNS

+0

Bu harika. – CrazyTim

İlgili konular