script invalid – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self script invalid Wed, 07 Sep 11 19:41:23 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524075#m1524075 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524075#m1524075 <p>moin!</p> <p>ich habe folgendes javascript durch die <a href="http://jsfiddle.net/" rel="noopener noreferrer">jsFiddle</a> geleiert:</p> <pre><code class="block language-javascript">window<span class="token punctuation">.</span><span class="token function-variable function">onload</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// link mit id="bla" fokussieren </span> <span class="token keyword">var</span> toFocus <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span>window<span class="token punctuation">.</span>location<span class="token punctuation">.</span>hash<span class="token punctuation">.</span><span class="token function">substr</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>toFocus<span class="token punctuation">)</span> toFocus<span class="token punctuation">.</span><span class="token function">focus</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// beim loesen der maustaste rahmen um link entfernen </span> <span class="token keyword">for</span><span class="token punctuation">(</span>i<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span>i<span class="token operator"><</span>document<span class="token punctuation">.</span>links<span class="token punctuation">.</span>length<span class="token punctuation">;</span>i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> document<span class="token punctuation">.</span>links<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function-variable function">onmouseup</span><span class="token operator">=</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>blur<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">blur</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> </code></pre> <p>und diese sagt mir:</p> <blockquote> <p>Error:<br> Problem at line 6 character 9: Expected '{' and instead saw 'toFocus'.<br> toFocus.focus();<br> Problem at line 17 character 5: Don't make functions within a loop.<br> }<br> Problem at line 16 character 10: Missing semicolon.<br> }<br> Implied global: window 1,4, i 8,10</p> </blockquote> <p>wäre nett wenn mir jemand verrät was das bedeutet und wie ich das gerade biegen kann? leider bin ich nicht der javascriptschlaubürger :(</p> <p><a href="http://www.jungmann.to/" rel="nofollow noopener noreferrer">mfg</a> <a href="http://www.jungmann.net" rel="nofollow noopener noreferrer">torsten</a></p> <div class="signature">-- <br> Shakespeare sagt: To be or not to be / Sartre sagt: To be is to do / Camus sagt: To do is to be / Sinatra singt: Do be do be do </div> script invalid Thu, 08 Sep 11 00:16:20 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524076#m1524076 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524076#m1524076 <p>Hi,</p> <blockquote> <p>ich habe folgendes javascript durch die <a href="http://jsfiddle.net/" rel="noopener noreferrer">jsFiddle</a> geleiert:</p> </blockquote> <blockquote> <blockquote> <p>Problem at line 6 character 9: Expected '{' and instead saw 'toFocus'.</p> </blockquote> </blockquote> <p>Das ist nur ein Hinweis, dass du die optionalen Klammern beim if setzen solltest.</p> <blockquote> <blockquote> <p>Problem at line 17 character 5: Don't make functions within a loop.</p> </blockquote> </blockquote> <p>Die anonyme Funktion, welche du in der Schleife definierst, hat gar keinen Bezug zur Schleifenvariable o.ä.. Du kannst diese also auch außerhalb der Schleife einer Variablen zuweisen und brauchst nur noch diese Variable nutzen.</p> <blockquote> <blockquote> <p>Problem at line 16 character 10: Missing semicolon.</p> </blockquote> </blockquote> <p>Im Gegensatz zu einer Funktionsdeklaration (bei der du kein Semikolon nach der schließenden geschweiften Klammer brauchst) ist ein Funktionsausdruck (und einen solchen beschreibst du dort) ein Ausdruck wie viele andere auch. Also brauchst du dort ein Semikolon.</p> <blockquote> <blockquote> <p>Implied global: window 1,4, i 8,10</p> </blockquote> </blockquote> <p>Wenn du Variablen nicht mit var bekannt machst, sind diese automatisch global. Dies sollte man i.d.R. vermeiden.</p> <p>Bis die Tage,<br> Matti</p> <div class="signature">-- <br> <a href="http://tntnet.org/" rel="nofollow noopener noreferrer">Webapplikationen in C++ entwickeln</a> </div> script invalid Thu, 08 Sep 11 13:38:18 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524077#m1524077 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524077#m1524077 <p>moin!</p> <p>danke für deine antwort und ne interessante homepage hast du da gelistet ;-)</p> <p>ein paar der fehler hab ich dank deiner erklärung und etwas rumspielen gefunden und das ganze sieht jetzt so aus:</p> <pre><code class="block language-javascript">window<span class="token punctuation">.</span><span class="token function-variable function">onload</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// link mit id="bla" fokussieren </span> <span class="token keyword">var</span> toFocus <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span>window<span class="token punctuation">.</span>location<span class="token punctuation">.</span>hash<span class="token punctuation">.</span><span class="token function">substr</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>toFocus<span class="token punctuation">)</span> <span class="token punctuation">{</span>toFocus<span class="token punctuation">.</span><span class="token function">focus</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// beim loesen der maustaste rahmen um link entfernen </span> <span class="token keyword">for</span><span class="token punctuation">(</span>i<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span>i<span class="token operator"><</span>document<span class="token punctuation">.</span>links<span class="token punctuation">.</span>length<span class="token punctuation">;</span>i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> document<span class="token punctuation">.</span>links<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function-variable function">onmouseup</span><span class="token operator">=</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>blur<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">blur</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> </code></pre> <p>allerdings gibt sich die jsFiddle damit nicht zufrieden, ich habe gestern angefangen die self beschreibung für javascript zu lesen (ich komme wohl doch nicht drum'rum) würde mein problem aber gern schneller lösen als ich in der lage bin zu lernen...</p> <p>folgendes wirft mir die jsFiddle jetzt vor:</p> <blockquote> <blockquote> <p>Error:<br> Problem at line 17 character 9: Don't make functions within a loop.<br> }</p> </blockquote> </blockquote> <blockquote> <p>Die anonyme Funktion, welche du in der Schleife definierst, hat gar keinen Bezug zur Schleifenvariable o.ä.. Du kannst diese also auch außerhalb der Schleife einer Variablen zuweisen und brauchst nur noch diese Variable nutzen.</p> </blockquote> <p>welches ist die "anonyme Funktion"? wie bekomm ich die da raus ohne schaden anzurichten und wie bekomm ich die variable dann da rein mit positivem ausgang? iregnd wie sehe ich da nur einene methode den das lösen der maustaste zu definieren...</p> <blockquote> <blockquote> <p>Implied global: window 1,4, i 8,10</p> </blockquote> </blockquote> <blockquote> <p>Wenn du Variablen nicht mit var bekannt machst, sind diese automatisch global. Dies sollte man i.d.R. vermeiden.</p> </blockquote> <p>vermieden heißt ja nicht FALSCH oder? selfhtml sagt dazu "Sie ist im gesamten Dokument gültig und steht jederzeit zur Verfügung." was mir ja auch nur recht sein kann oder missverstehe ich hier was?</p> <p>auf wiederlesen ;-)</p> <p><a href="http://www.jungmann.to/" rel="nofollow noopener noreferrer">mfg</a> <a href="http://www.jungmann.net" rel="nofollow noopener noreferrer">torsten</a></p> <div class="signature">-- <br> Shakespeare sagt: To be or not to be / Sartre sagt: To be is to do / Camus sagt: To do is to be / Sinatra singt: Do be do be do </div> script invalid Thu, 08 Sep 11 14:09:46 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524078#m1524078 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524078#m1524078 <p>Hi,</p> <blockquote> <pre><code class="block language-javascript"></code></pre> </blockquote> <p>window.onload = function()</p> <blockquote> <p>{<br> // link mit id="bla" fokussieren<br> var toFocus = document.getElementById(window.location.hash.substr(1));<br>     if (toFocus)<br>     {toFocus.focus();<br> // beim loesen der maustaste rahmen um link entfernen<br> for(i=0;i<document.links.length;i++)<br>         {<br>         document.links[i].onmouseup=function()<br>                 {<br>                 if(this.blur)<br>                         {<br>                             this.blur();<br>                         }<br>                 };<br>         }<br>     }<br> };</p> </blockquote> <pre><code class="block"> Ich bin mal direkt und sage, dass dein Klammerstil gewöhnungsbedürftig ist. Ich erkenne nicht, warum die öffnende Klammer bei if(toFocus) auf der gleichen Höhe wie das if beginnt, dann aber kein Zeilenumbruch stattfindet, später bei if(this.blur) dann aber eins weiter eingerückt ist und ein Umbruch da ist (da wenigstens einheitlich mit dem for), ... Entscheide dich, wo du öffnende und schließende Klammern haben willst. Weitverbreitet sind folgende Stile: ~~~javascript for (...) {  // tue etwas } </code></pre> <p>und</p> <pre><code class="block language-javascript"><span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token operator">...</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// tue etwas </span> <span class="token punctuation">}</span> </code></pre> <p>Du kannst dir natürlich etwas eigenes ausdenken, aber das da oben ist sehr schwer zu lesen.</p> <blockquote> <blockquote> <blockquote> <p>Error:<br> Problem at line 17 character 9: Don't make functions within a loop.<br> }</p> </blockquote> </blockquote> <blockquote> <p>Die anonyme Funktion, welche du in der Schleife definierst, hat gar keinen Bezug zur Schleifenvariable o.ä.. Du kannst diese also auch außerhalb der Schleife einer Variablen zuweisen und brauchst nur noch diese Variable nutzen.</p> </blockquote> <p>welches ist die "anonyme Funktion"? wie bekomm ich die da raus ohne schaden anzurichten und wie bekomm ich die variable dann da rein mit positivem ausgang? iregnd wie sehe ich da nur einene methode den das lösen der maustaste zu definieren...</p> </blockquote> <p>Die anonyme Funktion ist die Funktion, welches du dem onmouseup-Handler zuweist. Das gleiche Ergebnis wäre</p> <pre><code class="block language-javascript"> <span class="token keyword">var</span> <span class="token function-variable function">myHandler</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>blur<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">blur</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">var</span> i<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span>i<span class="token operator"><</span>document<span class="token punctuation">.</span>links<span class="token punctuation">.</span>length<span class="token punctuation">;</span>i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> document<span class="token punctuation">.</span>links<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>onmouseup <span class="token operator">=</span> myHandler<span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>Da musst du dir aber immer sicher sein, was das "this" in diesem Zusammenhang ist. In diesem Beispiel bezieht sich "this" innerhalb von myHandler immer auf das Element, auf dem der Handler ausgelöst wurde. Wenn du da mehr wissen willst, lies dir die Artikel von molily zu dem Thema durch (<a href="http://molily.de/js/event-handling-grundlagen.html" rel="nofollow noopener noreferrer">Javascript: Event-Handling</a>).</p> <blockquote> <blockquote> <blockquote> <p>Implied global: window 1,4, i 8,10</p> </blockquote> </blockquote> <blockquote> <p>Wenn du Variablen nicht mit var bekannt machst, sind diese automatisch global. Dies sollte man i.d.R. vermeiden.</p> </blockquote> <p>vermieden heißt ja nicht FALSCH oder? selfhtml sagt dazu "Sie ist im gesamten Dokument gültig und steht jederzeit zur Verfügung." was mir ja auch nur recht sein kann oder missverstehe ich hier was?</p> </blockquote> <p>In der Originalmeldung steht ja auch Problem und nicht Fehler. Das gleiche gilt im Übrigen für die Sache mit Funktionsdefinitionen innerhalb von Schleifen. Du hast gültiges JavaScript, du könntest also schon aufhören.</p> <p>Bei globalen Variablen ist es aber so, dass du damit zwar kurzfristig dein Problem löst, du dir aber gleichzeitig langfristige Probleme einhandelst.<br> Einfaches Beispiel:</p> <pre><code class="block language-javascript"> <span class="token comment">// rufe zehnmal die Funktion do_something() auf, und übergib als Parameter die Zählvariable. </span> <span class="token keyword">for</span> <span class="token punctuation">(</span>i<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> <span class="token number">10</span><span class="token punctuation">;</span> <span class="token operator">++</span>i<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">do_something</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">/* Gib 3 alert()-Meldungen aus, welche den übergebenen Parameter und die fortlaufende Nummer der Meldung enthalten. */</span> <span class="token keyword">function</span> <span class="token function">do_something</span><span class="token punctuation">(</span><span class="token parameter">v</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">for</span> <span class="token punctuation">(</span>i<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator"><</span> <span class="token number">3</span><span class="token punctuation">;</span> <span class="token operator">++</span>i<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">"Tue etwas für v="</span> <span class="token operator">+</span> v <span class="token operator">+</span> <span class="token string">", i="</span> <span class="token operator">+</span> i<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </code></pre> <p>Bevor du weiterliest, überlege dir, was du von dem Code erwartest und dann probier ihn aus.</p> <p>(Es wird nicht 10x3 = 30mal ein Alert ausgegeben, sondern du hast eine Endlosschleife. Warum?)</p> <p>Nun stehen hier die Schleife und die Funktion nahe beieinander und man kann den Fehler schon direkt ablesen. Aber stell dir mal vor, dass die Funktion irgendwo ganz anders ist (oder gar nicht von dir und du dir die Funktion gar nicht anschaust!).</p> <p>Wenn mindestens ein Auftreten (besser: beide) von i als lokal deklariert werden (indem du ein "var" davor stellst), tritt der Fehler nicht auf.</p> <p>Bis die Tage,<br> Matti</p> <div class="signature">-- <br> <a href="http://tntnet.org/" rel="nofollow noopener noreferrer">Webapplikationen in C++ entwickeln</a> </div> script invalid Thu, 08 Sep 11 19:20:27 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524079#m1524079 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524079#m1524079 <p>moin!</p> <p>schön, dass du nicht so leicht aufgiebst ;-)</p> <blockquote> <p>Ich bin mal direkt und sage, dass dein Klammerstil gewöhnungsbedürftig ist.</p> </blockquote> <p>das ist die art von direktheit gegen die niemad was einzuwenden haben kann, danke dafür!</p> <blockquote> <p>Ich erkenne nicht, warum die öffnende Klammer bei if(toFocus) auf der gleichen Höhe wie das if beginnt, dann aber kein Zeilenumbruch stattfindet, später bei if(this.blur) dann aber eins weiter eingerückt ist und ein Umbruch da ist (da wenigstens einheitlich mit dem for), ...</p> </blockquote> <p>ich verstehe anhand deiner erläuterung, dass die klammersetztung quasi die "verschachtelung" des codes kennzeichnet, obwoh ich erst <a href="http://de.selfhtml.org/javascript/sprache/regeln.htm@title=hier" rel="nofollow noopener noreferrer">http://de.selfhtml.org/javascript/sprache/regeln.htm@title=hier</a> bin. die klemmer ist also das strukturmerkmal. allerdings sind mir schon scripte über den weg gelaufen, die einfach in einer reihe notiert waren, ähnlich der kommandozeile bei excel...</p> <blockquote> <p>Entscheide dich, wo du öffnende und schließende Klammern haben willst. Weitverbreitet sind folgende Stile:</p> <pre><code class="block language-javascript"></code></pre> </blockquote> <p>for (...) {</p> <blockquote> <p>// tue etwas<br> }</p> </blockquote> <pre><code class="block"> > > und > ~~~javascript for (...) > { >   // tue etwas > } > </code></pre> <p>ich les mal selfhtml weiter und werde mich für eine option entscheiden</p> <blockquote> <p>Du kannst dir natürlich etwas eigenes ausdenken, aber das da oben ist sehr schwer zu lesen.</p> </blockquote> <p>muss nicht unbedingt sein.</p> <blockquote> <p>Die anonyme Funktion ist die Funktion, welches du dem onmouseup-Handler zuweist. Das gleiche Ergebnis wäre</p> <pre><code class="block language-javascript"></code></pre> </blockquote> <blockquote> <p>var myHandler = function() {<br>   if(this.blur) {<br>     this.blur();<br>   }<br> };</p> <p>for(var i=0;i<document.links.length;i++) {<br>   document.links[i].onmouseup = myHandler;<br> }</p> </blockquote> <pre><code class="block"> hm, erst mal vertau ich deinen worten, ich werde mal versuchen das zu verstehen... d.h. also, dass die festlegung der lokalen variable außerhalb der funktion statt findet und der zweite teil in die ursprüngliche funktion eingebastelt gehört... werd's versuchen. > Da musst du dir aber immer sicher sein, was das "this" in diesem Zusammenhang ist. In diesem Beispiel bezieht sich "this" innerhalb von myHandler immer auf das Element, auf dem der Handler ausgelöst wurde. Wenn du da mehr wissen willst, lies dir die Artikel von molily zu dem Thema durch ([Javascript: Event-Handling](http://molily.de/js/event-handling-grundlagen.html)). im laufe der nächsten jahre werde ich sicher die gesamte doku von molily durch gewurschtelt haben, sieht nämlich sehr interessant aus und scheint auch für laien gemacht (oder?) danke für den link. > In der Originalmeldung steht ja auch Problem und nicht Fehler. Das gleiche gilt im Übrigen für die Sache mit Funktionsdefinitionen innerhalb von Schleifen. Du hast gültiges JavaScript, du könntest also schon aufhören. nö > Bei globalen Variablen ist es aber so, dass du damit zwar kurzfristig dein Problem löst, du dir aber gleichzeitig langfristige Probleme einhandelst. > Einfaches Beispiel: > > ~~~javascript > // rufe zehnmal die Funktion do_something() auf, und übergib als Parameter die Zählvariable. > for (i=0; i < 10; ++i) { >    do_something(i); > } > > /* >   Gib 3 alert()-Meldungen aus, welche den übergebenen Parameter und die fortlaufende Nummer der Meldung enthalten. > */ > function do_something(v) { >   for (i=0; i < 3; ++i) { >     alert("Tue etwas für v=" + v + ", i=" + i); >   } > } > </code></pre> <blockquote> <p>Bevor du weiterliest, überlege dir, was du von dem Code erwartest und dann probier ihn aus.</p> </blockquote> <p>ich war schon mal in böhmen... da gibt es solche dörfer...</p> <p>werde mich dransetzen</p> <blockquote> <p>(Es wird nicht 10x3 = 30mal ein Alert ausgegeben, sondern du hast eine Endlosschleife. Warum?)</p> </blockquote> <p>n.k.a.! (= noch keine ahnung!)</p> <blockquote> <p>Nun stehen hier die Schleife und die Funktion nahe beieinander und man kann den Fehler schon direkt ablesen.</p> </blockquote> <p>wenn ich dazu fähig wär...</p> <blockquote> <p>Aber stell dir mal vor, dass die Funktion irgendwo ganz anders ist (oder gar nicht von dir und du dir die Funktion gar nicht anschaust!).</p> </blockquote> <p>verstehe, da ich (noch) immer auf fremdsripten angewiesen bin und das eine oder andere script echt übel aussieht (schau dir <a href="http://www.jungmann.net/shadowbox.js" rel="nofollow noopener noreferrer">shadowbox.js</a> in meinem wurzelverzeichnis an wenn du lust hast) kann man schnell über derartige macken stolpern. ich hoffe nur, dass ich mir mit dem "perfekten" javascript nicht einen gewünschten aber bisher unerklärlichen effekt auf meiner seite zermatsche.</p> <blockquote> <p>Wenn mindestens ein Auftreten (besser: beide) von i als lokal deklariert werden (indem du ein "var" davor stellst), tritt der Fehler nicht auf.</p> </blockquote> <p>um nicht immer wie ein vollhonk da zu stehen und um zu verstehen was gesagt wird wenn mir leute wie du helfen werde ich mich jetzt ernsthaft mit js beschäftigen... das dauert aber, ich bin nicht sonderlich begabt mit sowas umzugehen und habe auch nicht allzu viel zeit dafür übrig (immerhin hab ich's neun jahre geschafft drum herum zu kommen, so lange betreibe ich schon eine eigene seite, die nur dasnk javascript und vielen helferlein, die kostenlos ihr knoff hoff zur verfügung stellen) leider kann ich erst nächsten dienstag wieder richtig rumbasteln, ich hoffe bis dahin ist diese diskussion noch nicht im archiv.</p> <p><a href="http://www.jungmann.to/" rel="nofollow noopener noreferrer">mfg</a> <a href="http://www.jungmann.net" rel="nofollow noopener noreferrer">torsten</a></p> <div class="signature">-- <br> Shakespeare sagt: To be or not to be / Sartre sagt: To be is to do / Camus sagt: To do is to be / Sinatra singt: Do be do be do </div> script invalid Fri, 09 Sep 11 06:14:43 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524080#m1524080 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524080#m1524080 <p>moin!</p> <p>das hier ist auf jeden fall auch flasch:</p> <pre><code class="block language-javascript"> <span class="token keyword">var</span> <span class="token function-variable function">myHandler</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>blur<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">blur</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> window<span class="token punctuation">.</span><span class="token function-variable function">onload</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// link mit id="bla" fokussieren </span> <span class="token keyword">var</span> toFocus <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span>window<span class="token punctuation">.</span>location<span class="token punctuation">.</span>hash<span class="token punctuation">.</span><span class="token function">substr</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>toFocus<span class="token punctuation">)</span> <span class="token punctuation">{</span> toFocus<span class="token punctuation">.</span><span class="token function">focus</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// beim loesen der maustaste rahmen um link entfernen </span> <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">var</span> i<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span>i<span class="token operator"><</span>document<span class="token punctuation">.</span>links<span class="token punctuation">.</span>length<span class="token punctuation">;</span>i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> document<span class="token punctuation">.</span>links<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>onmouseup <span class="token operator">=</span> myHandler<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> </code></pre> <p>Error:</p> <p>Problem at line 17 character 25: this is undefined</p> <p>Implied global: window 9,12</p> <p>:(</p> <p><a href="http://www.jungmann.to/" rel="nofollow noopener noreferrer">mfg</a> <a href="http://www.jungmann.net" rel="nofollow noopener noreferrer">torsten</a></p> <div class="signature">-- <br> Shakespeare sagt: To be or not to be / Sartre sagt: To be is to do / Camus sagt: To do is to be / Sinatra singt: Do be do be do </div> script invalid Fri, 09 Sep 11 07:41:48 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524081#m1524081 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524081#m1524081 <p>Mahlzeit torsten,</p> <p>Könntest Du bitte mal auf Dein komisches jsFiddle verzichten? Das verwirrt - gerade Dich als Anfänger - nur unnötig, da es etwas zu pingelig ist (ob das daran liegt, dass es sich noch im Alpha-Stadium befindet, vermag ich nicht zu sagen).</p> <blockquote> <p>das hier ist auf jeden fall auch flasch:</p> </blockquote> <p>Nein, ist es definitiv nicht. Lass das Javascript doch einfach mal laufen - es wird voraussichtlich problemlos funktionieren.</p> <blockquote> <p>Error:</p> <p>Problem at line 17 character 25: this is undefined</p> </blockquote> <p>Zeile 17 ist wahrscheinlich folgende?</p> <blockquote> <p>if(this.blur)</p> </blockquote> <p>Natürlich ist "this" dort undefiniert, wenn man die Funktion losgelöst betrachtet. Da die Funktion allerdings nur als Event-Handler verwendet wird, ist "this" zur Laufzeit sehr wohl definiert.</p> <blockquote> <p>Implied global: window 9,12</p> </blockquote> <p>Damit ist vermutlich folgendes gemeint?</p> <blockquote> <p>var toFocus = document.getElementById(window.location.hash.substr(1));</p> </blockquote> <p>Natürlich ist das das globale "window"-Objekt. Was sollte es sonst sein?</p> <p>Du solltest IMHO nicht allzu viel auf irgendwelche halbfertigen und amerikanisch[1] reagierenden Tools geben ...</p> <p>MfG,<br> EKKi</p> <p>[1] Erst schießen - dann fragen.</p> <div class="signature">-- <br> sh:( fo:| ch:? rl:( br:& n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:| </div> script invalid Fri, 09 Sep 11 12:09:20 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524082#m1524082 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524082#m1524082 <p>moinmoin!</p> <blockquote> <p>Könntest Du bitte mal auf Dein komisches jsFiddle verzichten?</p> </blockquote> <p>klar :)</p> <blockquote> <p>Das verwirrt - gerade Dich als Anfänger - nur unnötig,</p> </blockquote> <p>ist nicht auszuschließen, allerdings habe ich schon in vergangenheit versucht mein problem zu klären, habe aber außer lebenshilfe keine für meinen wissenstand verwertbaren infos bekommen. irgendwas musste ich doch machen... in etwa nach dem motto: "er war jung und brauchte das geld"</p> <blockquote> <p>Nein, ist es definitiv nicht. Lass das Javascript doch einfach mal laufen - es wird voraussichtlich problemlos funktionieren.</p> </blockquote> <p>ohne aufmüpfig wirken zu wollen: das script lief auch in der "falschen" version (s.o.) allerdings bin ich gern kompromissbereit, ein mögliches problem ist eben noch keins, gell. trotzdem stimme ich matti zu, wenn er meint das es beim js ähnlich ist wie im straßenverkehr. man muss halt mit den fehlern der anderen rechnen...</p> <blockquote> <blockquote> <p>Error:</p> <p>Problem at line 17 character 25: this is undefined</p> </blockquote> <p>Zeile 17 ist wahrscheinlich folgende?</p> <blockquote> <p>if(this.blur)</p> </blockquote> </blockquote> <p>wenn ich richtig gezählt habe ist das "i" in diesem teil gemeint: <code class="language-javascript"><span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">var</span> i<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span>i<span class="token operator"><</span>document<span class="token punctuation">.</span>links<span class="token punctuation">.</span>length<span class="token punctuation">;</span>i<span class="token operator">++</span><span class="token punctuation">)</span></code></p> <p>allerdings schließe ich (m)eine fehlinterpretation nicht aus.</p> <blockquote> <blockquote> <p>Implied global: window 9,12</p> </blockquote> <p>Damit ist vermutlich folgendes gemeint?</p> <blockquote> <p>var toFocus = document.getElementById(window.location.hash.substr(1));</p> </blockquote> <p>Natürlich ist das das globale "window"-Objekt. Was sollte es sonst sein?</p> </blockquote> <p>verstehe was du sagen willst... weiß aber nicht ob das gemeint ist</p> <blockquote> <p>[1] Erst schießen - dann fragen.</p> </blockquote> <p>:) dazu haben die bald keine kohle mehr allerdings darf ich "die amerikaner" nicht unterschätzen die wollen sich jetzt <a href="http://www.spiegel.de/wirtschaft/soziales/0,1518,785231,00.html" rel="nofollow noopener noreferrer">für weitere geliehene 450 miliarden dollar arbeitsplätze schaffen</a> mein tipp: rüstung (gabs schon mal)</p> <p>ALSO: das script funktioniert ABER mein altes neues problem ist wieder da. ich weiß immer noch nicht warum das script wenn ich einen link mit sprungmarke benutze wie zum beilpiel <a href="http://jungmann.net/#nopuresw" rel="nofollow noopener noreferrer">#nopuresw</a> den effekt erzeugt (bitte warten bis die seite vollständig geladen ist... ca 500kb plus durchrattern der scripte... dauert etwas)</p> <p>ich vermute das bis hier hin:</p> <pre><code class="block language-javascript"> <span class="token keyword">var</span> toFocus <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span>window<span class="token punctuation">.</span>location<span class="token punctuation">.</span>hash<span class="token punctuation">.</span><span class="token function">substr</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>toFocus<span class="token punctuation">)</span> <span class="token punctuation">{</span> toFocus<span class="token punctuation">.</span><span class="token function">focus</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token operator">...</span> </code></pre> <p>der link focussiert wird und der rest nicht weiter von bedeutung ist weil's kein mouseup gibt.</p> <p>wenn diese schlussfolgerung nicht völlig falsch ist verstehe ich nicht wiso der effekt nicht auftritt wenn ich folgendes notiere:</p> <pre><code class="block language-javascript"> window<span class="token punctuation">.</span><span class="token function-variable function">onload</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// class="resize" for normal picz </span> Shadowbox<span class="token punctuation">.</span><span class="token function">setup</span><span class="token punctuation">(</span><span class="token string">"a.resize"</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> handleOversize<span class="token operator">:</span> <span class="token string">"resize"</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// class="drag" for panoramic picz </span> Shadowbox<span class="token punctuation">.</span><span class="token function">setup</span><span class="token punctuation">(</span><span class="token string">"a.drag"</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> handleOversize<span class="token operator">:</span> <span class="token string">"drag"</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> window<span class="token punctuation">.</span><span class="token function-variable function">onload</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// link mit id="bla" fokussieren </span> <span class="token keyword">var</span> toFocus <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span>window<span class="token punctuation">.</span>location<span class="token punctuation">.</span>hash<span class="token punctuation">.</span><span class="token function">substr</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>toFocus<span class="token punctuation">)</span> toFocus<span class="token punctuation">.</span><span class="token function">focus</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// beim loesen der maustaste rahmen um link entfernen </span> <span class="token keyword">for</span><span class="token punctuation">(</span>i<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span>i<span class="token operator"><</span>document<span class="token punctuation">.</span>links<span class="token punctuation">.</span>length<span class="token punctuation">;</span>i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> document<span class="token punctuation">.</span>links<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function-variable function">onmouseup</span><span class="token operator">=</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>blur<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">blur</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> </code></pre> <p>folgendes geht aber wiederum:</p> <pre><code class="block language-javascript"> window<span class="token punctuation">.</span><span class="token function-variable function">onload</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// link mit id="bla" fokussieren </span> <span class="token keyword">var</span> toFocus <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span>window<span class="token punctuation">.</span>location<span class="token punctuation">.</span>hash<span class="token punctuation">.</span><span class="token function">substr</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>toFocus<span class="token punctuation">)</span> toFocus<span class="token punctuation">.</span><span class="token function">focus</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// beim loesen der maustaste rahmen um link entfernen </span> <span class="token keyword">for</span><span class="token punctuation">(</span>i<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span>i<span class="token operator"><</span>document<span class="token punctuation">.</span>links<span class="token punctuation">.</span>length<span class="token punctuation">;</span>i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> document<span class="token punctuation">.</span>links<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function-variable function">onmouseup</span><span class="token operator">=</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>blur<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">blur</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">// class="resize" for normal picz </span> Shadowbox<span class="token punctuation">.</span><span class="token function">setup</span><span class="token punctuation">(</span><span class="token string">"a.resize"</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> handleOversize<span class="token operator">:</span> <span class="token string">"resize"</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// class="drag" for panoramic picz </span> Shadowbox<span class="token punctuation">.</span><span class="token function">setup</span><span class="token punctuation">(</span><span class="token string">"a.drag"</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> handleOversize<span class="token operator">:</span> <span class="token string">"drag"</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> </code></pre> <p>wobei der zusätzliche teil ein stup für ein fremdscript zur bilddarstellung ist, es ist aber unerheblich ob dieses fremdscript im HEAD bereich gelistet ist oder nicht. das problem ist imho in der o.a. notation zu suchen**</p> <p>** ohne gewähr</p> <p>fragen über fragen<br> <a href="http://www.jungmann.to/" rel="nofollow noopener noreferrer">mfg</a> <a href="http://www.jungmann.net" rel="nofollow noopener noreferrer">torsten</a></p> <div class="signature">-- <br> Shakespeare sagt: To be or not to be / Sartre sagt: To be is to do / Camus sagt: To do is to be / Sinatra singt: Do be do be do </div> script invalid Fri, 09 Sep 11 12:28:42 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524105#m1524105 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524105#m1524105 <p>mist, hab in der eile des gefechts mit der falschen (alten) fünktion gepostet, ist aber mit der ausgelagerten variablen (myHandler) genau das gleiche...</p> script invalid Fri, 09 Sep 11 12:28:56 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524083#m1524083 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524083#m1524083 <p>Hallo torsten,</p> <blockquote> <p>window.onload = function() {<br>    ...</p> <p>window.onload = function()<br>    ...</p> </blockquote> <p>der zweite Eventhandler überschreibt hier den ersten. Schau dir mal an, wie Events hinzugefügt werden, Stichwort addEvent.</p> <p>Gruß, Jürgen</p> script invalid Sat, 10 Sep 11 14:21:57 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524084#m1524084 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524084#m1524084 <p>moinmoin jürgen,</p> <blockquote> <blockquote> <p>window.onload = function() {<br>    ...</p> <p>window.onload = function()<br>    ...</p> </blockquote> <p>der zweite Eventhandler überschreibt hier den ersten. Schau dir mal an, wie Events hinzugefügt werden, Stichwort addEvent.</p> </blockquote> <p>bedeutet das automatisch, dass das:</p> <pre><code class="block language-javascript"> window<span class="token punctuation">.</span><span class="token function-variable function">onload</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// link mit id="bla" fokussieren </span> <span class="token keyword">var</span> toFocus <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span>window<span class="token punctuation">.</span>location<span class="token punctuation">.</span>hash<span class="token punctuation">.</span><span class="token function">substr</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>toFocus<span class="token punctuation">)</span> toFocus<span class="token punctuation">.</span><span class="token function">focus</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// beim loesen der maustaste rahmen um link entfernen </span> <span class="token keyword">for</span><span class="token punctuation">(</span>i<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span>i<span class="token operator"><</span>document<span class="token punctuation">.</span>links<span class="token punctuation">.</span>length<span class="token punctuation">;</span>i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> document<span class="token punctuation">.</span>links<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function-variable function">onmouseup</span><span class="token operator">=</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>blur<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">blur</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">// class="resize" for normal picz </span> Shadowbox<span class="token punctuation">.</span><span class="token function">setup</span><span class="token punctuation">(</span><span class="token string">"a.resize"</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> handleOversize<span class="token operator">:</span> <span class="token string">"resize"</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// class="drag" for panoramic picz </span> Shadowbox<span class="token punctuation">.</span><span class="token function">setup</span><span class="token punctuation">(</span><span class="token string">"a.drag"</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> handleOversize<span class="token operator">:</span> <span class="token string">"drag"</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> </code></pre> <p>nicht nur funktioniert, sondern auch korrekt ist?</p> <p><a href="http://www.jungmann.to/" rel="nofollow noopener noreferrer">mfg</a> <a href="http://www.jungmann.net" rel="nofollow noopener noreferrer">torsten</a></p> <div class="signature">-- <br> Shakespeare sagt: To be or not to be / Sartre sagt: To be is to do / Camus sagt: To do is to be / Sinatra singt: Do be do be do </div> script invalid Sat, 10 Sep 11 22:03:28 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524085#m1524085 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524085#m1524085 <p>Hallo torsten,</p> <p>du sprichst hier zwei Probleme an:</p> <p>1. Sinnvoller Einsatz von Unterprogrammen<br> 2. Hinzufügen von Eventhandlen</p> <p>Zu 1.<br> Fasse Programmteile zu Unterprogrammen zusammen, die zusammen gehören. Dadurch wird dein Code übersichtlicher und die Teile lassen sich besser wieder verwerten.</p> <p>Zu 2.<br> Das Notieren von Eventhandlern nach dem Schema</p> <p><code class="language-javascript">element<span class="token punctuation">.</span><span class="token function-variable function">onevent</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span> <span class="token punctuation">;</span></code></p> <p>hat den Nachteil, das evtl. von anderen Scripten gesetzte Eventhandler überschrieben werden. Daher ist es langfristig sinnvoller, mit "addEvent" zu arbeiten. Leider müssen hier Browserunterschiede berücksichtigt werden. Z.Zt. benutze ich folgende Funktion:</p> <pre><code class="block language-javascript"><span class="token keyword">function</span> <span class="token function">addEvent</span><span class="token punctuation">(</span><span class="token parameter">obj<span class="token punctuation">,</span> type<span class="token punctuation">,</span> fn</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> type <span class="token operator">=</span> type<span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token string">"on"</span><span class="token punctuation">,</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>obj<span class="token punctuation">.</span>addEventListener<span class="token punctuation">)</span> <span class="token punctuation">{</span> obj<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span>type<span class="token punctuation">,</span> fn<span class="token punctuation">,</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>obj<span class="token punctuation">.</span>attachEvent<span class="token punctuation">)</span> <span class="token punctuation">{</span> obj<span class="token punctuation">.</span><span class="token function">attachEvent</span><span class="token punctuation">(</span><span class="token string">'on'</span> <span class="token operator">+</span> type<span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token function">fn</span><span class="token punctuation">.</span><span class="token function">call</span><span class="token punctuation">(</span>obj<span class="token punctuation">,</span> window<span class="token punctuation">.</span>event<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token comment">// addEvent</span> </code></pre> <p>die ich im <a href="http://molily.de/js/event-handling-fortgeschritten.html#addevent-helfer" rel="nofollow noopener noreferrer">Netz </a> gefunden und angepasst habe.</p> <p>Statt</p> <pre><code class="block language-javascript">window<span class="token punctuation">.</span><span class="token function-variable function">onload</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">Aufgabe_1</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">Aufgabe_2</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>schreibst du dann</p> <pre><code class="block language-javascript"><span class="token function">addEvent</span><span class="token punctuation">(</span>window<span class="token punctuation">,</span><span class="token string">"onload"</span><span class="token punctuation">,</span>Aufgabe_1<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">addEvent</span><span class="token punctuation">(</span>window<span class="token punctuation">,</span><span class="token string">"onload"</span><span class="token punctuation">,</span>Aufgabe_2<span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Gruß, Jürgen</p> script invalid Sun, 11 Sep 11 01:28:06 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524086#m1524086 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524086#m1524086 <p>[latex]Mae  govannen![/latex]</p> <blockquote> <p><code class="language-javascript"> type <span class="token operator">=</span> type<span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token string">"on"</span><span class="token punctuation">,</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></p> </blockquote> <p>hier wird "on" generell entfernt ...</p> <blockquote> <p><code class="language-javascript"> obj<span class="token punctuation">.</span><span class="token function">attachEvent</span><span class="token punctuation">(</span><span class="token string">'on'</span> <span class="token operator">+</span> type<span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></code></p> </blockquote> <p>und hier ggf. wieder hinzugefügt. Nicht, daß das schlimm wäre, insbesondere bei der Leistungsfähigkeit heutiger JS-Engines und Computer, aber irgendwie überflüssig.</p> <p>Also sollte "on" nur da entfernt werden, wo es notwendig ist: Im Zweig</p> <blockquote> <p><code class="language-javascript"> <span class="token keyword">if</span> <span class="token punctuation">(</span>obj<span class="token punctuation">.</span>addEventListener<span class="token punctuation">)</span> <span class="token punctuation">{</span></code></p> </blockquote> <p>...</p> <blockquote> <p><code class="language-javascript"> <span class="token punctuation">}</span></code></p> </blockquote> <p>allerdings dann richtig. Bei dir wird "on" irgendwo im übergebenene Parameter "type" ersetzt, kann also im schlimmsten Fall dazu führen, daß der Name des Events verstümmelt wird, wenn man den Namen so übergibt, wie es für addEvent üblich ist: ohne führendes "on". Übergebe ich also "DOMContentLoaded" macht deine Funktion "DOMCtentLoaded" daraus.</p> <p>Ich sehe zwar keinen Sinn darin, entgegen den Gepflogenheiten fast(?) aller addEvent-Hilfsfunktionen, die man im Netz findet, den Event-Typ mit führendem "on" übergeben zu müssen, aber wenn du das schon tust, dann muß das zu ersetzende "on" am Anfang der Zeichenkette festgemacht werden.</p> <p>Stur lächeln und winken, Männer!<br> Kai</p> <div class="signature">-- <br> Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken<br> in Richtung "Mess up the Web".(<a href="https://forum.selfhtml.org/?t=197497&m=1324775" rel="noopener noreferrer">suit</a>)<br> <a href="http://selfhtml.knrs.de/#h_stylesheet" rel="nofollow noopener noreferrer">SelfHTML-Forum-Stylesheet</a> </div> script invalid Sun, 11 Sep 11 07:30:44 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524087#m1524087 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524087#m1524087 <p>Hallo Kai345,</p> <blockquote> <blockquote> <p><code class="language-javascript"> type <span class="token operator">=</span> type<span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token string">"on"</span><span class="token punctuation">,</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></p> </blockquote> </blockquote> <blockquote> <p>"DOMContentLoaded" macht deine Funktion "DOMCtentLoaded" daraus.</p> </blockquote> <p>du hast recht. Diese Zeile hat historische Gründe: meine alte addEvent benötigte zwingend "on", bei der Originalversion der neuen addEvent darf kein "on" vorangestellt werden. Als ich dann beim Aufräumen die alte Version durch die neue ersetzt habe, gab es ein Problem. Daher funktioniert meine Version mit und ohne "on". Dass das "on" überall stehen darf, war bisher bei mir noch kein Problem, da ich bisher nur die "alten" Events wie "onload", onmouseover, ... verwende. Von dem "neu-modischen Zeugs" wie "DOMContentLoaded" habe ich bisher Abstand gehalten, da ich es bisher nicht benötigt habe. Außerdem bin ich beim Einsatz von für mich neuen Techniken sehr zurückhaltend, da ich von der unterschiedlichen Unterstützung durch die Browser weiß und mangels Testmöglichkeiten (ich habe von den verbreiteten Browsern nur die aktuellen installiert) die Funktion von Alternativen nicht richtig testen kann.</p> <p>Eine bessere Entfernung des "on" nur am Anfang steht aber auf der Todo-Liste. Daher danke für deine Anmerkungen.</p> <p>Gruß, Jürgen</p> script invalid Sun, 11 Sep 11 13:20:45 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524088#m1524088 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524088#m1524088 <p>moinmoin!</p> <p>@all</p> <p>eure tipps waren sehr hilfreich und ich habe <a href="http://de.selfhtml.org/dhtml/modelle/dom.htm#event_handling@title=dies" rel="nofollow noopener noreferrer">http://de.selfhtml.org/dhtml/modelle/dom.htm#event_handling@title=dies</a> und <a href="http://molily.de/js/event-handling-grundlagen.html" rel="nofollow noopener noreferrer">das</a> und <a href="http://molily.de/js/event-handling-fortgeschritten.html#addevent-helfer" rel="nofollow noopener noreferrer">jenes</a> (letzteres zumindest teilweise) gelesen, meine verwirrung hat sich nicht im geringsten entwirrt, allerdings ist die eine oder andere kleinigkeit hängen geblieben...</p> <p>onread function (){<br> @matti<br> @ekki<br> @kai<br> @jürgen<br> }</p> <p>=)</p> <p>was ich allerdings nicht herausgefunden oder verstanden habe ist WARUM das:</p> <pre><code class="block language-javascript"> window<span class="token punctuation">.</span><span class="token function-variable function">onload</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">Aufgabe_1</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">Aufgabe_2</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>nicht gemacht werden soll oder darf obwohl es funktioniert. kann eiener von euch mal bitte DAU-tauglich dieses WARUM NICHT erläutern oder mir einen link senden oder mich auf den textteil hinweisen in dem die erklärung zu finden ist, die ich vermutlich nicht verstanden habe?</p> <p>unterdessen habt ihr in meinem kopf folgendes zusammen gebastelt, was auch prima zu funktionieren scheint:</p> <pre><code class="block language-javascript"><span class="token keyword">function</span> <span class="token function">addEvent</span><span class="token punctuation">(</span><span class="token parameter">obj<span class="token punctuation">,</span> type<span class="token punctuation">,</span> fn</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> type <span class="token operator">=</span> type<span class="token punctuation">.</span><span class="token function">replace</span><span class="token punctuation">(</span><span class="token string">"on"</span><span class="token punctuation">,</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>obj<span class="token punctuation">.</span>addEventListener<span class="token punctuation">)</span> <span class="token punctuation">{</span> obj<span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span>type<span class="token punctuation">,</span> fn<span class="token punctuation">,</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>obj<span class="token punctuation">.</span>attachEvent<span class="token punctuation">)</span> <span class="token punctuation">{</span> obj<span class="token punctuation">.</span><span class="token function">attachEvent</span><span class="token punctuation">(</span><span class="token string">'on'</span> <span class="token operator">+</span> type<span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token function">fn</span><span class="token punctuation">.</span><span class="token function">call</span><span class="token punctuation">(</span>obj<span class="token punctuation">,</span> window<span class="token punctuation">.</span>event<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token comment">// addEvent </span> <span class="token keyword">var</span> <span class="token function-variable function">myHandler</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">.</span>blur<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">blur</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token keyword">function</span> <span class="token function">killFrame</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// link mit id="bla" fokussieren </span> <span class="token keyword">var</span> toFocus <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span>window<span class="token punctuation">.</span>location<span class="token punctuation">.</span>hash<span class="token punctuation">.</span><span class="token function">substr</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>toFocus<span class="token punctuation">)</span> <span class="token punctuation">{</span> toFocus<span class="token punctuation">.</span><span class="token function">focus</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// beim loesen der maustaste rahmen um link entfernen </span> <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">var</span> i<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span>i<span class="token operator"><</span>document<span class="token punctuation">.</span>links<span class="token punctuation">.</span>length<span class="token punctuation">;</span>i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> document<span class="token punctuation">.</span>links<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">.</span>onmouseup <span class="token operator">=</span> myHandler<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> <span class="token keyword">function</span> <span class="token function">normalPic</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// class="resize" for normal picz </span> Shadowbox<span class="token punctuation">.</span><span class="token function">setup</span><span class="token punctuation">(</span><span class="token string">"a.resize"</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> handleOversize<span class="token operator">:</span> <span class="token string">"resize"</span><span class="token punctuation">,</span> <span class="token literal-property property">overlayColor</span><span class="token operator">:</span> <span class="token string">"#fff"</span><span class="token punctuation">,</span> <span class="token literal-property property">initialWidth</span><span class="token operator">:</span> <span class="token number">700</span><span class="token punctuation">,</span> <span class="token literal-property property">initialHeight</span><span class="token operator">:</span> <span class="token number">550</span><span class="token punctuation">,</span> <span class="token literal-property property">overlayOpacity</span><span class="token operator">:</span> <span class="token number">0.8</span><span class="token punctuation">,</span> <span class="token literal-property property">continuous</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> <span class="token literal-property property">fadeDuration</span><span class="token operator">:</span> <span class="token number">0.5</span><span class="token punctuation">,</span> <span class="token literal-property property">resizeDuration</span><span class="token operator">:</span> <span class="token number">0.5</span><span class="token punctuation">,</span> <span class="token literal-property property">slideshowDelay</span><span class="token operator">:</span> <span class="token number">15</span><span class="token punctuation">,</span> <span class="token literal-property property">counterType</span><span class="token operator">:</span> <span class="token string">"skip"</span><span class="token punctuation">,</span> <span class="token literal-property property">counterLimit</span><span class="token operator">:</span> <span class="token number">19</span><span class="token punctuation">,</span> <span class="token literal-property property">viewportPadding</span><span class="token operator">:</span> <span class="token number">5</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">function</span> <span class="token function">panoPic</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// class="drag" for panoramic picz </span> Shadowbox<span class="token punctuation">.</span><span class="token function">setup</span><span class="token punctuation">(</span><span class="token string">"a.drag"</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> handleOversize<span class="token operator">:</span> <span class="token string">"drag"</span><span class="token punctuation">,</span> <span class="token literal-property property">overlayColor</span><span class="token operator">:</span> <span class="token string">"#fff"</span><span class="token punctuation">,</span> <span class="token literal-property property">initialWidth</span><span class="token operator">:</span> <span class="token number">700</span><span class="token punctuation">,</span> <span class="token literal-property property">initialHeight</span><span class="token operator">:</span> <span class="token number">550</span><span class="token punctuation">,</span> <span class="token literal-property property">overlayOpacity</span><span class="token operator">:</span> <span class="token number">0.8</span><span class="token punctuation">,</span> <span class="token literal-property property">continuous</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> <span class="token literal-property property">fadeDuration</span><span class="token operator">:</span> <span class="token number">0.5</span><span class="token punctuation">,</span> <span class="token literal-property property">resizeDuration</span><span class="token operator">:</span> <span class="token number">0.5</span><span class="token punctuation">,</span> <span class="token literal-property property">slideshowDelay</span><span class="token operator">:</span> <span class="token number">15</span><span class="token punctuation">,</span> <span class="token literal-property property">counterType</span><span class="token operator">:</span> <span class="token string">"skip"</span><span class="token punctuation">,</span> <span class="token literal-property property">counterLimit</span><span class="token operator">:</span> <span class="token number">19</span><span class="token punctuation">,</span> <span class="token literal-property property">viewportPadding</span><span class="token operator">:</span> <span class="token number">5</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> window<span class="token punctuation">.</span><span class="token function-variable function">onload</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">addEvent</span><span class="token punctuation">(</span>window<span class="token punctuation">,</span><span class="token string">"onload"</span><span class="token punctuation">,</span>killFrame<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">addEvent</span><span class="token punctuation">(</span>window<span class="token punctuation">,</span><span class="token string">"onload"</span><span class="token punctuation">,</span>normalPic<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">addEvent</span><span class="token punctuation">(</span>window<span class="token punctuation">,</span><span class="token string">"onload"</span><span class="token punctuation">,</span>panoPic<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <blockquote> <p>Eine bessere Entfernung des "on" nur am Anfang steht aber auf der Todo-Liste. Daher danke für deine Anmerkungen.</p> </blockquote> <p>betseht eigentlich die möglichkeit, das dieser kleine fopas auswirkungen auf das eventhandling in fremdscriten (die ich ausreichend verwende) hat?</p> <p><a href="http://www.jungmann.to/" rel="nofollow noopener noreferrer">mfg</a> <a href="http://www.jungmann.net" rel="nofollow noopener noreferrer">torsten</a></p> <div class="signature">-- <br> Shakespeare sagt: To be or not to be / Sartre sagt: To be is to do / Camus sagt: To do is to be / Sinatra singt: Do be do be do </div> script invalid Sun, 11 Sep 11 13:33:53 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524090#m1524090 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524090#m1524090 <p>moin!</p> <blockquote> <blockquote> <p>Eine bessere Entfernung des "on" nur am Anfang steht aber auf der Todo-Liste. Daher danke für deine Anmerkungen.</p> </blockquote> <p>betseht eigentlich die möglichkeit, das dieser kleine fopas auswirkungen auf das eventhandling in fremdscriten (die ich ausreichend verwende) hat?</p> </blockquote> <p>außerdem müsste doch aus meinem "continuous: true," (sie oben) "ctinuous: true," werden, was die eigenschaften der darstellung der shadowbox ändern müsste... tut es aber nicht...</p> <p>hm....</p> <p><a href="http://www.jungmann.to/" rel="nofollow noopener noreferrer">mfg</a> <a href="http://www.jungmann.net" rel="nofollow noopener noreferrer">torsten</a></p> <div class="signature">-- <br> Shakespeare sagt: To be or not to be / Sartre sagt: To be is to do / Camus sagt: To do is to be / Sinatra singt: Do be do be do </div> script invalid Sun, 11 Sep 11 13:40:01 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524089#m1524089 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524089#m1524089 <p>Hallo torsten,</p> <blockquote> <p>was ich allerdings nicht herausgefunden oder verstanden habe ist WARUM das:</p> <pre><code class="block language-javascript"></code></pre> </blockquote> <blockquote> <p>window.onload = function() {<br>   Aufgabe_1();<br>   Aufgabe_2();<br> }</p> </blockquote> <pre><code class="block"> > > nicht gemacht werden soll oder darf obwohl es funktioniert. kann eiener von euch mal bitte DAU-tauglich dieses WARUM NICHT erläutern oder mir einen link senden oder mich auf den textteil hinweisen in dem die erklärung zu finden ist, die ich vermutlich nicht verstanden habe? das ist nicht falsch, aber wenn ein anderes Script ebenfalls ein onload-Event setzt, kommt es zur Kollision. Der spätere gewinnt. > unterdessen habt ihr in meinem kopf folgendes zusammen gebastelt, was auch prima zu funktionieren scheint: > > ~~~javascript function addEvent(obj, type, fn) {   if(type.search("on")==0) type = type.substr(2); // Korrekturvorschlag >   if (obj.addEventListener) { >     obj.addEventListener(type, fn, false); >   } >   else if (obj.attachEvent) { >     obj.attachEvent('on' + type, function () { >       return fn.call(obj, window.event); >     }); >   } > } // addEvent > > window.onload = function() { > addEvent(window,"onload",killFrame); > addEvent(window,"onload",normalPic); > addEvent(window,"onload",panoPic); > } </code></pre> <p>das ist aber jetzt nicht dein Ernst? Der einzige Sinn des addEvent ist der Verzicht auf element.onevent = ..., also hier auf window.onload = ...</p> <p>Ob das überhaupt funktioniert, möchte ich anzweifeln, da erst nach dem Laden der Seite weitere onload-Handler hinzugefügt werden.</p> <blockquote> <blockquote> <p>Eine bessere Entfernung des "on" nur am Anfang steht aber auf der Todo-Liste. Daher danke für deine Anmerkungen.</p> </blockquote> <p>betseht eigentlich die möglichkeit, das dieser kleine fopas auswirkungen auf das eventhandling in fremdscriten (die ich ausreichend verwende) hat?</p> </blockquote> <p>keine Ahnung, bei mir hat es geklappt ... :). Aber oben ist ein Korrekturvorschlag. Du kannst das Entfernen des "on" auch ganz weglassen, musst dann aber beim Aufruf das "on" weglassen.</p> <p>Der Einsatz von mehreren Fremdscripten ist allerdings immer kritisch, z.B. weil sie sich gegenseitig globale Variablen und Funktionen überschreiben können, und Wechselwirkungen sollten immer sorgfältig überprüft werden.</p> <p>Gruß, Jürgen</p> script invalid Sun, 11 Sep 11 13:43:21 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524091#m1524091 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524091#m1524091 <p>Hallo torsten,</p> <blockquote> <p>außerdem müsste doch aus meinem "continuous: true," (sie oben) "ctinuous: true," werden, was die eigenschaften der darstellung der shadowbox ändern müsste... tut es aber nicht...</p> </blockquote> <p>wie kommst du denn darauf? Der Funktion addEvent wird u.A. der Parameter type als String übergeben, und in diesem String wird das on entfernt. Wie kommst du auf die Idee, dadurch würde der Code des Eventhandlers verändert?</p> <p>Gruß, Jürgen</p> script invalid Sun, 11 Sep 11 13:54:19 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524092#m1524092 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524092#m1524092 <p>moin!</p> <blockquote> <p>wie kommst du denn darauf?</p> </blockquote> <p>ganz einfach: schneller schreiben als denken...</p> <blockquote> <p>Der Funktion addEvent wird u.A. der Parameter type als String übergeben, und in diesem String wird das on entfernt. Wie kommst du auf die Idee, dadurch würde der Code des Eventhandlers verändert?</p> </blockquote> <p>da denk ich mal drüber nach... da ich den urschleim noch nicht verinnerlicht hab kannst du ja versuchen das posting zu vergessen.</p> <p>danke</p> <p>vielleicht kannst du mir noch einen hinweis zu dem posting <a href="https://forum.selfhtml.org/?t=206830&m=1405260" rel="noopener noreferrer">davor</a> und der frage nach dem WARUM NICHT geben.</p> <p><a href="http://www.jungmann.to/" rel="nofollow noopener noreferrer">mfg</a> <a href="http://www.jungmann.net" rel="nofollow noopener noreferrer">torsten</a></p> <div class="signature">-- <br> Shakespeare sagt: To be or not to be / Sartre sagt: To be is to do / Camus sagt: To do is to be / Sinatra singt: Do be do be do </div> script invalid Sun, 11 Sep 11 14:04:04 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524093#m1524093 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524093#m1524093 <p>Hallo torsten,</p> <blockquote> <p>vielleicht kannst du mir noch einen hinweis zu dem posting <a href="https://forum.selfhtml.org/?t=206830&m=1405260" rel="noopener noreferrer">davor</a> und der frage nach dem WARUM NICHT geben.</p> </blockquote> <p>hab ich doch: window.onload = ... kann den onload-Eventhandler eines anderen davor eingebundenen Scripts überschreiben. Daher sollte man diesen Weg zum Setzen von Eventhandlern nur nutzen, wenn sichergestellt ist, dass keine anderen Scripte dieses auch tun.</p> <p>Gruß, Jürgen</p> script invalid Sun, 11 Sep 11 14:18:11 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524094#m1524094 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524094#m1524094 <p>moin!</p> <blockquote> <blockquote> <p>vielleicht kannst du mir noch einen hinweis zu dem posting <a href="https://forum.selfhtml.org/?t=206830&m=1405260" rel="noopener noreferrer">davor</a> und der frage nach dem WARUM NICHT geben.</p> </blockquote> <p>hab ich doch: window.onload = ... kann den onload-Eventhandler eines anderen davor eingebundenen Scripts überschreiben. Daher sollte man diesen Weg zum Setzen von Eventhandlern nur nutzen, wenn sichergestellt ist, dass keine anderen Scripte dieses auch tun.</p> </blockquote> <p>das hab ich auch verstanden weil ich:</p> <pre><code class="block language-javascript"> window<span class="token punctuation">.</span>onload <span class="token operator">=</span> <span class="token operator">...</span> window<span class="token punctuation">.</span>onload <span class="token operator">=</span> <span class="token operator">...</span> </code></pre> <p>zwei mal aufgerufen habe aber was ich nicht verstanden habe ist, ob das ganze auch für diese form gilt:</p> <pre><code class="block language-javascript"> window<span class="token punctuation">.</span><span class="token function-variable function">onload</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">Aufgabe_1</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">Aufgabe_2</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>oder verstehe ich das mal wieder miß?</p> <p><a href="http://www.jungmann.to/" rel="nofollow noopener noreferrer">mfg</a> <a href="http://www.jungmann.net" rel="nofollow noopener noreferrer">torsten</a></p> <div class="signature">-- <br> Shakespeare sagt: To be or not to be / Sartre sagt: To be is to do / Camus sagt: To do is to be / Sinatra singt: Do be do be do </div> script invalid Sun, 11 Sep 11 14:23:38 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524095#m1524095 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524095#m1524095 <p>Hallo torsten,</p> <blockquote> <pre><code class="block language-javascript"></code></pre> </blockquote> <blockquote> <p>window.onload = function() {</p> </blockquote> <p>diese Zeile überschreibt  möglicherweise den Onloadhandler, den schon ein anderes davor eingebundenes Script gesetzt hat. Sonst ist das OK.</p> <blockquote> <p>Aufgabe_1();<br>   Aufgabe_2();<br> }</p> </blockquote> <pre><code class="block"> Gruß, Jürgen </code></pre> script invalid Sun, 11 Sep 11 14:36:16 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524096#m1524096 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524096#m1524096 <p>moin!</p> <p>an dieser stelle klinke ich mich für ne weile aus, weil ich gleich die wand hoch gehe <a href="http://www.jungmann.net/my.js" rel="nofollow noopener noreferrer">das hier</a> zeigt den gewünschten effekt wenn ein link wie <a href="http://www.jungmann.net/#gletsch" rel="nofollow noopener noreferrer">http://www.jungmann.net/#gletsch</a> im adressfeld steht und <a href="http://www.jungmann.net/my.test_01.js" rel="nofollow noopener noreferrer">das hier</a> nicht.</p> <p>siehe:</p> <p><a href="http://www.jungmann.net/#nosw" rel="nofollow noopener noreferrer">gut</a></p> <p>und:</p> <p><a href="http://www.jungmann.net/start.test_01.html#nosw" rel="nofollow noopener noreferrer">böse</a></p> <p>grrrrrrrrrrr</p> <p><a href="http://www.jungmann.to/" rel="nofollow noopener noreferrer">mfg</a> <a href="http://www.jungmann.net" rel="nofollow noopener noreferrer">torsten</a></p> <div class="signature">-- <br> Shakespeare sagt: To be or not to be / Sartre sagt: To be is to do / Camus sagt: To do is to be / Sinatra singt: Do be do be do </div> script invalid Sun, 11 Sep 11 14:53:38 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524098#m1524098 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524098#m1524098 <p>[latex]Mae  govannen![/latex]</p> <blockquote> <p>und <a href="http://www.jungmann.net/my.test_01.js" rel="nofollow noopener noreferrer">das hier</a> nicht.</p> </blockquote> <p>Weil da immer noch der Fehler drin ist, den Jürgen <a href="https://forum.selfhtml.org/?t=206830&m=1405264" rel="noopener noreferrer">hier</a> bereits bemängelt hat.</p> <p>Stur lächeln und winken, Männer!<br> Kai</p> <div class="signature">-- <br> Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken<br> in Richtung "Mess up the Web".(<a href="https://forum.selfhtml.org/?t=197497&m=1324775" rel="noopener noreferrer">suit</a>)<br> <a href="http://selfhtml.knrs.de/#h_stylesheet" rel="nofollow noopener noreferrer">SelfHTML-Forum-Stylesheet</a> </div> script invalid Sun, 11 Sep 11 15:05:30 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524097#m1524097 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524097#m1524097 <p>Hallo torsten,</p> <blockquote> <p>an dieser stelle klinke ich mich für ne weile aus,</p> </blockquote> <p>ich auch, da ich nicht mehr weiß, wie ich es noch erklären soll.</p> <p>Gruß, Jürgen</p> script invalid Mon, 12 Sep 11 14:55:56 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524099#m1524099 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524099#m1524099 <p>moin!</p> <p>autsch!</p> <blockquote> <p>Weil da immer noch der Fehler drin ist, den Jürgen <a href="https://forum.selfhtml.org/?t=206830&m=1405264" rel="noopener noreferrer">hier</a> bereits bemängelt hat.</p> </blockquote> <p>das posting mit der bemängelung hab ich komplett überlesen, sorry dafür und danke für den wiederholten hinweis :) ich merke schon dass ich eure nerven ziemlich starpaziere...</p> <p>das js hab ich nochmal angepasst, aber ich verlinkes hier nicht um euch weiteres zu ersparen, außerdem dürfte das inzwischen warscheinlich sogar peinlich sein, ich habs in den aktuellen versionen von FF/IE/O/GC getestet und sollte mit dem ergebnis zufrieden sein :) vielleicht seid ihr's jetzt auch.</p> <p>eine anmerkung von jürgen lässt mich außerdem noch grübeln:</p> <blockquote> <p>Ob das überhaupt funktioniert, möchte ich anzweifeln, da erst nach dem Laden der Seite weitere onload-Handler hinzugefügt werden.</p> </blockquote> <p>wie meint er das mit dem "nach dem Laden der Seite" das script steht doch im HEAD bereich der seite und die shadowbox funktioniert eh nur wenn die seite vollständig geladen wurde (zumindest beschreibt das der verfasser so, ähnlich wie bei der lightbox) wenn sich das "seite" auf das script an sich bezieht hab ich einfach mal beim <a href="http://j-berkemeier.de/Ritzelrechner.html" rel="nofollow noopener noreferrer">ritzelrechner</a> in den quelltext geschaut... hier ist das addEvent zwar am ende einer funktion innerhalb des HEAD bereichs, habe dem aber keine bedeutung beigemessen...</p> <p>war meine vermutung wieder falsch?</p> <p><a href="http://www.jungmann.to/" rel="nofollow noopener noreferrer">mfg</a> <a href="http://www.jungmann.net" rel="nofollow noopener noreferrer">torsten</a></p> <div class="signature">-- <br> Shakespeare sagt: To be or not to be / Sartre sagt: To be is to do / Camus sagt: To do is to be / Sinatra singt: Do be do be do </div> script invalid Mon, 12 Sep 11 15:28:43 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524100#m1524100 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524100#m1524100 <p>Hallo torsten,</p> <blockquote> <p>eine anmerkung von jürgen lässt mich außerdem noch grübeln:</p> <blockquote> <p>Ob das überhaupt funktioniert, möchte ich anzweifeln, da erst nach dem Laden der Seite weitere onload-Handler hinzugefügt werden.</p> </blockquote> </blockquote> <p>das Ereignis "Seite geladen" tritt genau einmal ein, nämlich dann, wenn die Seite vollständig einschließlich HTML, CSS, JS, Bilder, ... geladen ist. Wenn du auf dieses Ereignis reagieren willst, musst du das dem Browser mitteilen, bevor es eintritt.</p> <p>Gruß, Jürgen</p> script invalid Mon, 12 Sep 11 19:52:31 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524101#m1524101 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524101#m1524101 <p>moinmoin jürgen!</p> <blockquote> <p>Hallo torsten,</p> <blockquote> <p>eine anmerkung von jürgen lässt mich außerdem noch grübeln:</p> <blockquote> <p>Ob das überhaupt funktioniert, möchte ich anzweifeln, da erst nach dem Laden der Seite weitere onload-Handler hinzugefügt werden.</p> </blockquote> </blockquote> <p>das Ereignis "Seite geladen" tritt genau einmal ein, nämlich dann, wenn die Seite vollständig einschließlich HTML, CSS, JS, Bilder, ... geladen ist. Wenn du auf dieses Ereignis reagieren willst, musst du das dem Browser mitteilen, bevor es eintritt.</p> </blockquote> <p>diese schlussfolgerung erklärt den satz der drüber steht, nennt aber nicht den grund deines zweifels (ich behaupte nicht der wär unberechtigt und ich verstehe, dass ich dem browser dieses ereigniss wohl verheimliche) für meinen "newbie" verstand ist das windows.onload ereignis (um das es geht, oder?) teil der von dir aufgeführten bestandteile (HTML, CSS, JS, Bilder) und wenn es teil des ganzen ist, dann wird es doch behandelt bevor das ganze beendet ist?</p> <p>das ist lediglich meine schlußfolgerung und somit mit an sicherheit grenzender warscheinlichkeit nicht richtig. aber ich versteh mal wieder nicht wie's zusammengehört.</p> <p>ich lese einfach die doku weiter und finde mglw eines tages selbst heraus was noch zu wissen nötig scheint um das zu begreifen.</p> <p>danke für eure hilfe! das soll nicht heißen ich klinke mich aus, würde aber versehen wenn ihr das macht ;-)</p> <p><a href="http://www.jungmann.to/" rel="nofollow noopener noreferrer">mfg</a> <a href="http://www.jungmann.net" rel="nofollow noopener noreferrer">torsten</a></p> <div class="signature">-- <br> Shakespeare sagt: To be or not to be / Sartre sagt: To be is to do / Camus sagt: To do is to be / Sinatra singt: Do be do be do </div> script invalid Mon, 12 Sep 11 20:23:57 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524102#m1524102 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524102#m1524102 <p>Hallo torsten,</p> <blockquote> <p>diese schlussfolgerung erklärt den satz der drüber steht, nennt aber nicht den grund deines zweifels ...</p> </blockquote> <p>ganz einfach, ich habe es ausprobiert.</p> <p>Gruß, Jürgen</p> script invalid Mon, 12 Sep 11 21:28:21 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524103#m1524103 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524103#m1524103 <p>moin!</p> <p>lecko mio! is ja irre! jetzt hab ich sogar beim falsch machen noch was falsch gemacht...</p> <p>hab den alten zustand wieder hergestellt...</p> <p><a href="http://www.jungmann.to/" rel="nofollow noopener noreferrer">mfg</a> <a href="http://www.jungmann.net" rel="nofollow noopener noreferrer">torsten</a></p> <div class="signature">-- <br> Shakespeare sagt: To be or not to be / Sartre sagt: To be is to do / Camus sagt: To do is to be / Sinatra singt: Do be do be do </div> script invalid Tue, 13 Sep 11 19:22:51 Z https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524104#m1524104 https://forum.selfhtml.org/self/2011/sep/7/script-invalid/1524104#m1524104 <p>moinmoin jürgen (wenn du noch da draußen bist)!</p> <p><a href="http://jungmann.to/#zooz" rel="nofollow noopener noreferrer">imho könnte es sein, dass ich's heraus gefunden habe...</a></p> <p>das addEvent hab ich innerhalb einer window.onload funktion abgefeuert, das wahr wohl so falsch wie's nur sein kann.</p> <blockquote> <p>das Ereignis "Seite geladen" tritt genau einmal ein, nämlich dann, wenn die Seite vollständig einschließlich HTML, CSS, JS, Bilder, ... geladen ist. Wenn du auf dieses Ereignis reagieren willst, musst du das dem Browser mitteilen, bevor es eintritt.</p> </blockquote> <p>vielleicht wolltest du mir sagen, dass ich das ereignis komplett versteckt hatte? wenn das so ist hat sich mir dieser inhalt erst erschlossen nachdem ich den fehler (wenn er's denn war) gefunden habe, dachtest du es wär nicht angemessen den fehler auf grund der beschreibung finden zu können?</p> <p>das kann ich nicht ausschließen, dass du damit recht hattest =) ... danke nochmal!</p> <p><a href="http://www.jungmann.to/" rel="nofollow noopener noreferrer">mfg</a> <a href="http://www.jungmann.net" rel="nofollow noopener noreferrer">torsten</a></p> <div class="signature">-- <br> Shakespeare sagt: To be or not to be / Sartre sagt: To be is to do / Camus sagt: To do is to be / Sinatra singt: Do be do be do </div>