Internet Explorer, select tag si onload
Inca un motiv pentru care urasc Internet Explorer.
Toate browserele noi au tendinta sa faca cache la campurile de formular de pe o pagina. Pana aici nimic normal, usor enervant, dar nu anormal.
Se da urmatorul exemplu:
1<select id="select">
2 <option value=a>a</option>
3 <option value=b>b</option>
4 <option value=c>c</option>
5</select>
6<script>
7
8var checkSelected = function () {
9 var element = document.getElementById('select');
10 alert(element[element.selectedIndex].value);
11}
12
13// ruleaza dupa onload
14window.onload = checkSelected;
15
16// ruleaza inainte de onload
17checkSelected();
18
19</script>
Se incarca pagina, se selecteaza a treia valoare si apoi se face refresh. Pentru ca nu s-a trimis nici un formular prima impresie este ca rezultatul va fi mereu “a”. Se pare ca nu este tocmai asa:
- FireFox: c c
- Google Chrome: a a
- Internet Explorer: a c
Pot sa inteleg de ce FireFox a ales sa faca cache la valori chiar si daca nu se trimite formularul.
Pot sa inteleg si ca in cazul Google Chrome nu face cache la pagina daca nu s-a trimis formularul.
Dar ca Internet Explorer face cache si il incarca de abea dupa ce a incarcat toata pagina? Asta mi se pare confuz! Adica nu ai varianta sa nu folosesti onload? De ce? Nici macar nu am trimis formularul?
Testul a fost facut pe Internet Explorer 9 si compatibility view la versiunile 7 si 8.