Eventhandler zur Überwachung des Anzeigeschriftgrades ?
LiveSucks
- javascript
0 Chräcker Heller0 Joachim0 LiveSucks
Hallo,
in JavaScript kann man beispielsweise die Änderung der Fenstergröße des aktuellen Browserfensters durch den Benutzer über den event-handler window.onresize überwachen.
Gibt es einen ähnlichen event-handler, der überwacht, ob der Benutzer den Standart-Anzeige-Schriftgrad seines Browsers ändert
(, indem der Benutzer beispielsweise im Internet-Explorer 5 auf Ansicht -> Schriftgrad klickt und eine andere Größe auswählt) ?
Wenn ja: Ab welchem Java-Script/Bei welcher Internet-Explorer- bzw. Netscape-Versionen ?
Ich freue mich auf Antworten, bedanke mich im voraus
und verbleibe mit freundlichen Grüßen.
Hallo,
glaube nicht, das es sowas gibt. Aber wenn Du so etwas brauchst, dann befürchte ich schon ein grundlegenderes Problem bei Deinem Konzept. Denn was für einen Schrifttyp habe ich als Standard eingestellt? Erlaube ich "deine" Schriften oder überschreibe ich die durch meine? Mit wieviel dpi zeigt mein Monitor Schriften an? Wie bricht mein browser Texte um, wieviel platz nehmen Leerzeichen ein und rundet er auf oder ab bei der Platzverteilung? Wie groß ist meine Fontdarstellung innerhalb meines Betriebssystems eingestellt?
Du siehst, da gäbe es noch mehr Dinge zu beachten, wenn man eine Idee von der Schriftgröße abhängig machen möchte.....
Chräcker
Hallo,
zunächst mal danke für die Antwort.
Viel Konzept habe ich nicht.
Nur folgendes:
Eine linienlose Tabelle mit drei Spalten und nur einer Zeile.
Alle Spalten sind vertikal zentriert ausgerichtet.
!__Die Tabelle ist immer grad so breit wie das Browser-Fenster.__!
Das darf ich leider nicht anders machen. Anonsten hätte ich keine Probleme.
Die linke Spalte enthält einen langen Textabsatz.
Die mittlere Spalte enthält die Grafik einer Mengenklammer ( } ),
welche den Text der linken Spalte umfassen soll.
Die rechte Spalte enthält ein erklärendes Wort/eine Zusammenfassung für alles in der linken Spalte.
Beispielsweise:
Zelle1: Zelle2: Zelle3:
(Text:) (Grafik mit (Text:)
Klammer:)
Hund, Hamster, |
Katze, Pferd, } Säugetiere
Maus, Ich selbst |
Ich habe bisher folgendes Problem gesehen:
Wenn sich der Zeilenumbruch in Zelle1 ändert, ändert sich auch deren Höhe.
Folglich muss die Grafik mit der Klammer in Zelle2 in diesem Fall in ihrer Höhe wieder neu an die linke Zelle angepasst werden, damit sie den Text der linken Spalte wieder ganz umschliesst.
Es stellte sich mir nun die Frage, in welchen Fällen sich der Zeilenumbruch einer Tabelle, die immer so breit sein soll, wie das Browserfenster, überhaupt ändert, ohne daß der Browser die Homepage von selbst komplett neu einliest.
Habe bisher zwei Fälle gefunden:
1. Der User ändert die Fenstergröße seines Browsers
2. Der User ändert die Standart-Anzeige-Schrift
zu 1:
Das habe ich hinbekommen. Immer wenn der Benutzer die Fenstergröße ändert, wird die Höhe der Grafik neu berechnet und selbige neu eingefügt. Fürs Neuaufbauen habe ich eine Funktion "neuAufbau" gebastelt und rufe sie wie folgt auf:
window.onresize = neuAufbau;
"neuAufbau" sieht so aus:
function neuAufbau()
{
if (Breite != Fensterbreite() || Hoehe != Fensterhoehe())
window.history.go(0);
}
Also ganz wie das Beispiel aus der Selfhtml-Homepage.
[Um eine "Pixel- und Resize-Diskussion" von vorneherein
abzuwürgen:
Ich habe ein cgi-skript, das mir die gif-Grafik entsprechend der
Höhenangabe aus einem Metafont-File on-the-fly erstellt.
War lustig, hat nur 4 Wochen gedauert und ich habe dabei gelernt.
Da das ganze im Intra-Net ablaufen soll, ist die Ladezeit nicht
so wichtig.]
zu 2:
Es gibt aber noch den zweiten Fall - wenn der Benutzer die Standart-Anzeigeschrift ändert:
Gäbe es den von mir gesuchten Event-Handler, ich nenn ihn - hypothetisch - mal " font.SizeByUserAdjust ",
dann bräuchte ich
nebst
window.onresize = neuAufbau;
nur noch
font.SizeByUserAdjust = neuAufbau;
an geeigneter Stelle in mein Skript einfügen und für diesen Fall wäre der "Kittel auch geflickt", ohne daß der User selbst die Ansicht aktualisieren müsste.
So. Das war langatmig, aber vielleicht versteht man nun die bizarren Beweggründe für mein merkwürdiges Ansinnen.
Auf alle Fälle sei denjenigen, die das alles zu Ende gelesen haben, recht herzlich gedankt.
Grüße von LiveSucks
hi,
Gibt es einen ähnlichen event-handler, der überwacht, ob der Benutzer den Standart-Anzeige-Schriftgrad seines Browsers ändert
(, indem der Benutzer beispielsweise im Internet-Explorer 5 auf Ansicht -> Schriftgrad klickt und eine andere Größe auswählt) ?
nein, aber man kann was basteln. Da ich grade ein Script parat habe, haenge ich es mal dranne, testen darfst Du selber. Mozilla, NC4x und IE 5x kommen aber afaik damit klar.
Das Script gibt Dir die jeweilige Buchstabenbreite aus. Obs Sinn macht darfst Du fuer Dich entscheiden, an dieser Stelle plaediere _ich_ aber (ebenso wie mein Vorredner) fuer ein flexibleres Layout. Viel Spass...
Gruesse Joachim
<html>
<head>
<title>e-Sixt</title>
<meta name="Description" content="e-Sixt bietet die günstigen Tarife">
<meta name="Keywords" content="sixt, e-Sixt">
<meta name="Author" content="JW">
<style type="text/css">
#ebene0 {
position:absolute;
width:auto;
height:auto;
visibility:hidden;
}
</style>
<script language="javascript1.2">
// some known objects
var nc = !!(document.captureEvents && !document.getElementById);
var ie4 = !!(document.all && !document.documentElement);
// einfache div-layer referenzieren
function dRef(num) {return (nc? document.layers[num] : (ie4? document.all[num] : document.getElementById(num)))}
//Div-Breite
function divBreit(obj)
{
if(nc) return obj.document.width;
else return obj.offsetWidth;
}
function go()
{
var str = document.feld.eing.value;
if(nc)
{
with(document.ebene0.document)
{
open(); write(str); close();
}
}
else
{
dRef("ebene0").innerHTML = str;
}
var size = divBreit(dRef("ebene0"));
document.feld.eing.value = size;
}
</script>
</head>
<body marginheight="0" marginwidth="0">
<form Name="feld">
<input type="text" name="eing" size="10">
<input type="button" value="Buchstabenbreite" onclick="go()">
</form>
<div id="ebene0">Erstes Div</div>
</body>
</html>
Ein flexibles Layout will ich ja grade erreichen.
Prinzipiell will ich ja nur folgendes:
Der Browser soll die komplette Homepage nochmal neu malen, wenn
ein vom Benutzer herbeigeführtes Ereigniss eintritt, welches eine Änderung des Zeilenumbruchs in Tabellen zur Folge hat.
Zwei solche Ereignisse sind mir bisher bekannt:
1. Änderung der Fenstergröße.
Dieser Fall ist gelöst.
2. Änderung der Schriftgröße/Schriftart.
Diesen Fall werde ich jetzt wohl bald lösen, nachdem ich das
schöne Skript bekommen habe. Danke ! Danke ! Danke !