2012-06-22 9 views
12

Das folgende CSS beeinflusst, ob eine Seite standardmäßig im Hoch- oder Querformat gedruckt wird.Kann JavaScript den Wert von @page CSS ändern?

Ich weiß, dass dies nur mit einem sehr begrenzten Satz von Browsern funktioniert, und dass der Benutzer es überschreiben kann. Das ist okay; Ich versuche nur, einen guten Standard zu liefern.

Dies funktioniert gut als ein statischer Wert in CSS, aber ich würde gerne dynamisch zwischen Porträt & Landschaft basierend auf Benutzerauswahl wechseln. Ist es möglich, JavaScript zu verwenden, um diesen Wert zu ändern?

+0

möglich Duplikat [Deaktivieren Browser Druckoptionen (Kopf- und Fußzeilen, Ränder) von Seite?] (Http: // stackoverflow.com/questions/1960939/disabling-browser-print-options-headers-footers-margin-from-page) –

+0

@ J-16SDiZ: Ich glaube nicht; Ich habe diese Frage durchgesehen und sehe nichts davon, die Einstellung dynamisch zu ändern. – DNS

+0

@BNL: Nicht viel; Ich habe einige Zeit damit verbracht, durch das DOM zu schauen, wo ich auf diese Eigenschaft zugreifen könnte, konnte aber nichts finden. Ich dachte ein wenig darüber nach, das Stylesheet selbst zu ändern, ungefähr wie Jasssonpets Antwort, aber das erschien mir damals problematisch. – DNS

Antwort

16

Eine einfache Möglichkeit ist, einen separaten Stil für @page zu erstellen und ändern Sie es:

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

Normalerweise warte ich ein paar Tage, um etwas als korrekt zu markieren, falls jemand mit mehr Einsicht kommt, aber das ist ein guter, vernünftiger Ansatz, der einfach funktioniert; Danke. – DNS

+0

Das ist erstaunlich. – CrazyTim