Gunnar Bittersmann: Bild austauschen. Problem in Firefox

Beitrag lesen

@@fastix®:

nuqneH

Grund ist, Du hast ein in Firefox reserviertes Wort als Funktionsname benutzt.

Wenn man SELFHML Glauben schenken darf, ist "big" kein <http://de.selfhtml.org/javascript/sprache/reserviert.htm@title=reserviertes Wort>.

Ach so. "big" konnte im Firefox kein Funktionsname sein, weil es bereits als Element mit einer ID verwendet wurde und deshalb reserviert war.

Ach so?? Das war wohl nichts.

<p id="foo">foo</p>  
<p><button onclick="foo('bar')">bar</button></p>  
<script type="text/javascript">[code lang=javascript]function foo(s) { alert(s); }
~~~</script>[/code]  
  
gibt im Firefox problemlos "bar" aus. Und das auch, wenn man alle "foo" durch "big" ersetzt.  
  
Es ist der IE, der für ein Element mit @id="foo" eine globale Variable foo anlegt:  
  
~~~html
<p id="foo">foo</p>  
<script type="text/javascript">[code lang=javascript]alert(foo);
~~~</script>[/code]  
  
gibt im IE "[object HTMLParagraphElement]". (Und im Firefox einen Laufzeitfehler.)  
  
Diese globale Variable kann aber überschriben werden:  
  
~~~html
<p id="foo">foo</p>  
<script type="text/javascript">[code lang=javascript]alert(foo);
~~~</script>  
<p><button onclick="foo('bar')">bar</button></p>  
<script type="text/javascript">`function foo(s) { alert(s); }`{:.language-javascript}</script>  
<script type="text/javascript">`alert(foo);`{:.language-javascript}</script>[/code]  
  
Anfangs wie gehabt "[object HTMLParagraphElement]", nach der Funktionsdeklaration wird "function foo(s) { alert(s); }" ausgegeben.  
  
Und beim Click auf den Button erscheint auch im IE "bar".  
  
Qapla'

-- 
Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.  
(Mark Twain)