File: fensterueberwachen.htm

package info (click to toggle)
selfhtml 8.1.2-1
  • links: PTS
  • area: non-free
  • in suites: bullseye, buster, jessie, jessie-kfreebsd, squeeze, stretch, wheezy
  • size: 28,076 kB
  • ctags: 4,161
  • sloc: xml: 614; java: 375; makefile: 8
file content (181 lines) | stat: -rw-r--r-- 13,554 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>SELFHTML: JavaScript / Anwendungsbeispiele / nderungen der Fenstergre berwachen</title>
<link rel="stylesheet" type="text/css" href="../../src/selfhtml.css">
<meta name="description"    content="Wie Sie nderungen der Fenstergre berwachen knnen.">
<meta name="keywords"       content="SELFHTML, JavaScript, Resize, onresize, Fenstergre">
<meta name="author"         content="Redaktion SELFHTML, selfhtml81@selfhtml.org">
<meta name="robots"         content="noindex, nofollow">
<meta name="DC.Publisher"   content="SELFHTML e. V.">
<meta name="DC.Date"        content="2005-08-22T21:21:39+02:00">
<meta name="DC.Identifier"  content="http://de.selfhtml.org/javascript/beispiele/fenstergroessenueberwachen.htm">
<meta name="DC.Language"    content="de">
<meta name="DC.Rights"      content="../../editorial/copyright.htm">
<meta name="DC.Date.created" content="2001-10-27T08:00+01:00">
<meta name="SELF.Pagetype"  content="page">
<link rel="alternate" type="application/atom+xml" title="SELFHTML-Weblog (Atom, gesamt)" href="http://aktuell.de.selfhtml.org/weblog/atom-feed">
<link rel="alternate" type="application/rss+xml" title="SELFHTML-Weblog (RSS, Auszge)" href="http://aktuell.de.selfhtml.org/weblog/rss-feed">
<link rel="shortcut icon" type="image/x-icon" href="../../src/favicon.ico">
<link rel="author" title="Impressum" href="../../editorial/impressum.htm">
<link rel="contents" title="Inhaltsverzeichnis" href="../../navigation/inhalt.htm">
<link rel="index" title="Stichwortverzeichnis" href="../../navigation/stichwort.htm">
<link rel="search" title="Suche" href="../../navigation/suche/index.htm">
<link rel="help" title="Hilfe" href="../../editorial/index.htm">
<link rel="copyright" title="Urheberrecht" href="../../editorial/copyright.htm">
<link rel="top" title="SELFHTML" href="../../index.htm">
<link rel="up" title="Anwendungsbeispiele" href="index.htm">
<link rel="next" title="Allgemeines zu Dynamischem HTML" href="../../dhtml/intro.htm">
<link rel="prev" title="Fehlerbehandlung mit dem try..catch-Statement" href="fehlerbehandlung_try_catch.htm">
<link rel="first" title="Zwei Frames gleichzeitig ndern" href="zweiframes.htm">
</head>
<body>

<table cellpadding="4" cellspacing="0" border="0" width="100%">
<tr>
<td colspan="2" class="nav"><a class="an" name="top"><img src="../../src/refkap.gif" width="16" height="13" alt="Teil von"></a> <a href="../../index.htm">SELFHTML</a>/<a href="../../navigation/index.htm" target="_parent" class="navh">Navigationshilfen</a> <img src="../../src/refkap.gif" width="16" height="13" alt="Teil von">&nbsp;<a href="../index.htm">JavaScript/DOM</a> <img src="../../src/refkap.gif" width="16" height="13" alt="Teil von">&nbsp;<a href="index.htm">Anwendungsbeispiele</a></td>
</tr>
<tr>
<td class="doc" width="110"><a href="../../index.htm"><img src="../../src/logo.gif" width="106" height="109" border="0" alt="SELFHTML"></a></td>
<td class="docbot" width="100%"><h1 class="ph1">nderungen der Fenstergre berwachen</h1></td>
</tr>
<tr>
<td class="doctop">
<img src="../../src/dokx.gif" width="30" height="20" vspace="6" alt="Informationsseite">
</td>
<td valign="top" nowrap="nowrap">
<p>
<img src="../../src/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#hinweise">Hinweise zu diesen Beispielen</a><br>
<img src="../../src/down.gif" width="14" height="10" alt="nach unten">&nbsp;<a href="#quelltext">Quelltext mit Erluterungen</a><br>
</p>

<p><img src="../../src/dokf.gif" width="15" height="10" alt="Beispiel-Seite">&nbsp;<a href="anzeige/fenstergroessenueberwachen.htm">Anzeigebeispiel: So sieht's aus</a></p>
</td>
</tr><tr><td colspan="2" class="doc">&nbsp;<a href="#bottom"><img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"></a>&nbsp;</td></tr>
</table>



<h2><a class="an" name="hinweise">Hinweise zu diesem Beispiel</a></h2>

<p>Eine Verndern der Fenstergre durch den Anwender hat bei Netscape 4.x gelegentlich die Folge, dass dieser gesetzte Variablen, dynamische Positionierungen oder Stylesheet-Angaben "vergisst". Es ist jedoch mglich, nderungen der Fenstergre zu berwachen und damit gezielt auf die nderung zu reagieren. Auch beim Internet Explorer oder bei Netscape 6 ist es gelegentlich sinnvoll, auf nderungen reagieren zu knnen.</p>

<p>Fr die berwachung der Fenstergre wird der Event-Handler <code>onResize</code> verwendet. Dieser Event-Handler tritt ein, wenn der Anwender die Fenstergre ndert. Sie knnen diesem Event-Handler eine Funktion zuordnen, die bei Grennderungen ausgefhrt wird.</p>

<p>Beachten Sie, dass Sie mit diesem Beispiel nur den Neuaufbau der Seite erreichen. Eventuell genderte Variablen und Werte gehen dabei verloren. In Opera bis Version 6 ist es nicht mglich, die nderung der Fenstergre mit dem Event-Handler <code>onResize</code> zu berwachen.</p>



<p class="doc"><a href="#top"><img src="../../src/up.gif" width="14" height="10" border="0" alt="nach oben"></a><a href="#bottom"><img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"></a></p>



<h2><img src="../../src/js12.gif" width="30" height="30" alt="JavaScript 1.2" title="JavaScript 1.2"><img src="../../src/netsc4.gif" width="30" height="30" alt="Netscape 4.0" title="Netscape 4.0"><img src="../../src/msie4.gif" width="30" height="30" alt="MS IE 4.0" title="MS IE 4.0"><img src="../../src/op7.gif" width="30" height="30" alt="Opera 7" title="Opera 7"><img src="../../src/ffox1.gif" width="30" height="30" alt="Mozilla Firefox 1" title="Mozilla Firefox 1"><img src="../../src/konq31.gif" width="30" height="30" alt="Konqueror 3.1" title="Konqueror 3.1"><img src="../../src/saf1.gif" width="30" height="30" alt="Safari 1.0" title="Safari 1.0">&nbsp;<a class="an" name="quelltext">Quelltext mit Erluterungen</a></h2>

<p>Im Beispiel wird die Fenstergre auf nderungen hin berwacht. Sobald diese gendert wird, erfolgt ein Neuaufbau der Seite und die genderten Gren werden jeweils mit <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="../objekte/document.htm#write">document.write()</a> zur Kontrolle in das Dokument geschrieben. </p>

<h3 class="xmp">Beispiel:</h3>

<p><img src="../../src/dokf.gif" width="15" height="10" alt="Beispiel-Seite">&nbsp;<a href="anzeige/fenstergroessenueberwachen.htm">Anzeigebeispiel: So sieht's aus</a></p>

<pre>
&lt;html&gt;&lt;head&gt;
&lt;title&gt;Grennderung berwachen&lt;/title&gt;
&lt;script type="text/javascript"&gt;
function Fensterweite () {
  if (window.innerWidth) {
    return window.innerWidth;
  } else if (document.body &amp;&amp; document.body.offsetWidth) {
    return document.body.offsetWidth;
  } else {
    return 0;
  }
}

function Fensterhoehe () {
  if (window.innerHeight) {
    return window.innerHeight;
  } else if (document.body &amp;&amp; document.body.offsetHeight) {
    return document.body.offsetHeight;
  } else {
    return 0;
  }
}

function neuAufbau () {
  if (Weite != Fensterweite() || Hoehe != Fensterhoehe())
    location.href = location.href;
}

/* berwachung von Netscape initialisieren */
if (!window.Weite &amp;&amp; window.innerWidth) {
  window.onresize = neuAufbau;
  Weite = Fensterweite();
  Hoehe = Fensterhoehe();
}
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;script type="text/javascript"&gt;
/* berwachung von Internet Explorer initialisieren */
if (!window.Weite &amp;&amp; document.body &amp;&amp; document.body.offsetWidth) {
  window.onresize = neuAufbau;
  Weite = Fensterweite();
  Hoehe = Fensterhoehe();
}
&lt;/script&gt;
&lt;div id="Beispiel" style="position:absolute; top:100px; left:100px; border:solid 1px #000000;"&gt;
Text
&lt;/div&gt;
&lt;script type="text/javascript"&gt;
document.write("Weite: " + Weite + " Hhe: " + Hoehe);
&lt;/script&gt;

&lt;/body&gt;&lt;/html&gt;
</pre>

<h3 class="xpl">Erluterung:</h3>

<h4>Die Funktionen Fensterweite() und Fensterhoehe()</h4>

<p>Diese beiden Funktionen dienen dazu, die Fenstergre zu ermitteln. Die Funktion <code>Fensterweite()</code> prft, ob der Browser die Eigenschaft <code>window.innerWidth</code> kennt (das ist bei Netscape der Fall, nicht aber beim Internet Explorer). Ist dies der Fall, so wird der Wert der in dieser Eigenschaft gespeichert ist zurckgegeben. Kennt der Browser diese Eigenschaft nicht, so wird geprft, ob er das Objekt <code>document.body </code> kennt und ob dieses Objekt die Eigenschaft <code>document.body.offsetWidth</code> kennt (das ist beim Internet Explorer der Fall, nicht aber bei Netscape). Tritt dieser Zustand ein, so wird der Wert der Eigenschaft <code>document.body.offsetWidth</code> zurckgegeben. Sollte der Browser auch diesen Zweig der Anweisung nicht verfolgen knnen, wird 0 zurckgegeben.<br>
Die Funktion <code>Fensterhoehe()</code> arbeitet analog und verwendet die Eigenschaften <code>window.innerHeight</code> bzw. <code>document.body.offsetHeight</code>.</p>

<h4>berwachung fr Netscape initialisieren</h4>

<p>Beim Laden der Datei existiert die Variable <code>Weite</code> noch nicht. Da eine globale Variable immer eine Eigenschaft bzw. ein Objekt des Fensterobjektes ist, kann mit <code>window.Weite</code> geprft werden, ob diese existiert. Netscape kennt zudem die Eigenschaft <code>window.innerWidth</code>. Deshalb arbeitet er die entsprechende Anweisung ab. Zuerst wird die berwachung des Event-Handler <code>onresize</code> initialisiert (zum Verstndnis siehe auch die allgemeine Verwendung des <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="../objekte/event.htm#allgemeines">event</a>-Objekts). <code>onResize</code> wird ausgelst, sobald sich die Fenstergre ndert und ruft dann die Handler-Funktion <code>neuAufbau()</code> auf. Anschlieend wird in der Variablen <code>Weite</code> der Rckgabewert der Funktion <code>Fensterweite()</code> und in der Variablen <code>Hoehe</code> der Rckgabewert der Funktion <code>Fensterhoehe()</code> gespeichert. Damit stehen beide Variablen fr weitere Verarbeitungsaufgaben zur Verfgung.</p>

<h4>berwachung fr den Internet Explorer initialisieren</h4>

<p>Die berwachung fr den Internet Explorer gestaltet sich hnlich. Im Unterschied zum Netscape Navigator bentigt er jedoch das Objekt <code>document.body</code>. Dieses Objekt steht jedoch erst nach dem Laden des Body-Tags zur Verfgung. Deshalb ist der entsprechende Script-Bereich nicht im Dateikopf, sondern <code>body</code>-Bereichs des Dokuments notiert. Auch der Netscape 6 kennt das Objekt <code>document.body</code> und dessen Eigenschaften. Er fhrt jedoch diesen Script-Bereich nicht aus, da dieser Browser zum Laufzeitpunkt die Variable <code>Weite</code> bereits kennt.</p>

<h4>Die Handler-Funktion neuAufbau()</h4>

<p>Die Funktion <code>neuAufbau()</code> wird aufgerufen, wenn der Event-Handler <code>onResize</code> aktiv wird. Sie vergleicht den Wert der Variablen <code>window.Weite</code> mit dem Rckgabewert der Funktion <code>Fensterweite()</code> und den Wert der Variable <code>window.Hoehe</code> mit dem Rckgabewert der Funktion <code>Fensterhoehe()</code>. Daran erkennt sie, ob sich die Fenstergre verndert hat. In diesem Fall wird die Eigenschaft <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="../objekte/location.htm#href">location.href</a> mit sich selbst berschrieben, was einen Neuaufbau der Seite bewirkt. Wird der Event-Handler <code>onResize</code> aufgerufen, ohne dass eine reale Vernderung der Fenstergre stattgefunden hat - das kann gelegentlich passieren - geschieht nichts, da die Bedingung zum Neuladen nicht erfllt ist.</p>



<table cellpadding="4" cellspacing="0" border="0" width="100%">
<tr><td colspan="2" class="doc">
&nbsp;<a href="#top"><img src="../../src/up.gif" width="14" height="10" border="0" alt="nach oben"></a>
</td></tr>
<tr><td class="doc"><a href="../../dhtml/intro.htm"><img src="../../src/next.gif" width="10" height="10" border="0" hspace="10" alt="weiter"></a></td>
<td width="100%"><img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="../../dhtml/intro.htm">Allgemeines zu Dynamischem HTML</a>
</td></tr>
<tr>
<td class="doc"><a href="fehlerbehandlung_try_catch.htm"><img src="../../src/prev.gif" width="10" height="10" border="0" hspace="10" alt="zurck"></a></td>
<td><img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="fehlerbehandlung_try_catch.htm">Fehlerbehandlung mit dem try..catch-Statement </a>
</td>
</tr>
<tr><td colspan="2" class="doc">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="nav"><a class="an" name="bottom"><img src="../../src/refkap.gif" width="16" height="13" alt="Teil von"></a> <a href="../../index.htm">SELFHTML</a>/<a href="../../navigation/index.htm" target="_parent" class="navh">Navigationshilfen</a> <img src="../../src/refkap.gif" width="16" height="13" alt="Teil von">&nbsp;<a href="../index.htm">JavaScript/DOM</a> <img src="../../src/refkap.gif" width="16" height="13" alt="Teil von">&nbsp;<a href="index.htm">Anwendungsbeispiele</a></td>
</tr>
</table>

<p>&copy; 2007 <img src="../../src/dok.gif" width="15" height="10" alt="Seite">&nbsp;<a href="../../editorial/impressum.htm">Impressum</a></p>

</body>
</html>