Rolf B: top.location im iframe abfragen

Beitrag lesen

Hallo Linuchs,

das Problem heißt "cross origin" Zugriff. Bei Dokumente auf file:/// hat sozusagen jedes seinen eigenen Origin und deswegen darfst Du aus dem iframe nicht auf Eigenschaften des Elterndokuments zugreifen.

Das ist schon länger so, aber der FF hat das bisher wohl zugelassen. Ggf. gibt's auch ein Firefox-Flag, womit Du Cross-Origin Zugriffe für wieder erlauben kannst, google mal danach.

Deine Idee, der URL des iframe-Dokuments das Format anzuhängen, ist eine Möglichkeit.

Du kannst das aber auch mit CSS machen. Zum einen hat das <link> Element ein Media-Attribut, wo Du CSS-Dateien nur für den Druck festlegen kannst.

<link rel="stylesheet" href="noten.css" media="print">

Steht auch im Wiki

Was da noch nicht steht, dafür aber bei MDN, ist die Möglichkeit, hier auch Medienfeatures und nicht nur Medientypen abzufragen. Als Range-Abfrage, was Chromia und Feurios seit einem Jahr können, wird das eigentlich ganz schick:

<link rel="stylesheet" href="noten_a5.css"
      media="print and (14cm <= width <= 15cm)">

Diese Abfrage basierend jetzt auf A5 Hochformat (14,85cm breit). Welchen Wert Du genau bekommst, mag aber auch von Randgrößen abhängen, das weiß ich beim Print CSS jetzt nicht genau, ob die Feature-Queries die Seitengröße oder die Größe des bedruckbaren Bereichs abfragen. Ich theoretisiere hier, ich habe das noch nicht selbst gemacht.

Welche Werte Du genau abfragen musst, hängt wohl auch von deiner Seitenausrichtung ab. Dafür weiß ich jetzt zu wenig über deine Liederbücher. Aber, die Ausrichtung an sich kann man auch abfragen. Wie das beim Drucken einer Seite mit iframes genau funktioniert, musst Du vermutlich experimentell erkunden. Kannst ja Dummy-Seiten machen, wo Du in divs ein ::after Element einsetzt und dieses Element je nach Media-Ergebnis mit unterschiedlichem content befüllst. Oder je nach Media-Ergebnis das eine oder andere div ein- und ausblendest. Dadurch kann dann "A4 Querformat" oder "A6 Hochformat" als Text erscheinen

Je nach dem, wie sehr sich die Stylesheets für die Seitengrößen unterscheiden, kannst Du auch die unterschiedlichen Formate zu einer CSS Datei zusammenfassen und nur die Unterschiede in @media-Abfragen packen.

Rolf

--
sumpsi - posui - obstruxi