| Autor | Zpráva | ||
|---|---|---|---|
| Jisp Profil |
#1 · Zasláno: 4. 6. 2015, 11:08:35
Jednoduchý prvek SELECT - například:
<select> <option>A</option> <option>B</option> <option>C</option> </select> Nepomůže ani javascriptový příkaz (...select[0].selectedIndex = 0) - nebo pomůže, ale jen po dobu běhu programu. To lze vidět, pokud na konec stránky vložíte příkaz hlášky: <script>alert("AHA")</script>Postup: - vyberte v selectu volbu "B" nebo "C" - dejte povel RELOAD v prohlížeči IE verze 8 ÷ 11 - selekt zobrazí volbu "A" a současně vyskočí hláška "AHA" - po odkliknutí hlášky naskočí původně vybraná volba ("B" nebo "C"). Ve složitějších formulářích s funkčními vazbami mezi prvky SELECT způsobí reload v aktuálních IE pravou paseku. Nabídne někdo řešení? |
||
| _es Profil |
Prosím o odkaz na živou ukázku. Asi ti tam robí komplikácie nejaký JS. Vyskúšaj to s vypnutým JS. V IE8 mi nasledujúci ukážka žiadne problémy nerobí: http://kod.djpw.cz/tnnb-
|
||
| Jisp Profil |
_es:
Je to zvláštní: - Tvůj odkaz v mém IE 11 skutečně funguje - umístil jsem soubor s Tvým kódem na můj web - http://www.etatherm.cz/test/tvuj.htm - v mém IE 11 nefunguje - můj soubor, který rovněž nefunguje v IE 11 je na http://www.etatherm.cz/test/muj.htm- oba soubory bez problémů fungují v Chrome (ale již nikoliv ve Firefoxu 36.0.1) - odkaz na soubor s alertovou hláškou: http://www.etatherm.cz/test/muj_2.htm |
||
| Joker Profil |
#4 · Zasláno: 4. 6. 2015, 14:13:28
Jisp:
Přesněji řečeno IE při obnovení stránky zachová hodnoty všech formulářových polí. Když tam bude textový input, hodnota se zachová taky. Neřekl bych, že by hodnoty měl smazat, resp. že to chování je chybné. Resp. asi na to neexistuje nějaká specifikace, takže ten prohlížeč se prostě tak chová. _es: „V IE8 mi nasledujúci ukážka žiadne problémy nerobí“ Nejspíš to ovlivní nějaká hlavička, tipoval bych expires.
Totožný kód mi lokálně funguje tak, jak píše Jisp, zatímco na kod.djpw.cz (který posílá ty hlavičky) se data neuchovají. |
||
| _es Profil |
Jisp:
Skús spraviť formulár tak, aby bol „plnohodnotný“, aby mal odosielacie tlačítko, aby mali optiony atribút value... Možno to však nepomôže. Hodnotu zresetuje CTRL + Reload. Joker: „Nejspíš to ovlivní nějaká hlavička, tipoval bych expires.“ To by možno mohlo byť riešenie Jispovho problému. „Neřekl bych, že by hodnoty měl smazat, resp. že to chování je chybné.“ Ak sa na stránku návštevník dostane tlačítkom „späť“, tak sa dá predpokladať, že sa mu môžu hodiť posledné hodnoty formulárových polí či trebárs dynamicky vytvorené alebo menené elementy v JS. No pri reloade mi to príde ako chybné chovanie - návštevník vtedy asi očakáva zobrazenie stránky v takom stave, ako keby sa načítala prvý krát. |
||
| Chamurappi Profil |
#6 · Zasláno: 4. 6. 2015, 21:41:20
Reaguji na Jispa:
„nebo pomůže, ale jen po dobu běhu programu“ Můžeš změnit selectedIndex při onloadu stránky, ten by měl nastat po obnovení stavu formuláře.
Nebo zkus zavolat formulář.reset(), tím se zresetuje celý formulář, takže by to mohlo přebít i prohlížečovu paměť.
|
||
| Jisp Profil |
#7 · Zasláno: 5. 6. 2015, 10:39:07
Chamurappi:
selectedIndex v onloadu jsou tím správným řešením - díky!!!
Já jsem ten příkaz měl na konci stránky ve scriptu; domníval jsem se, že má stejný účinek jako když je v onloadu. Není tomu tak a pořád dost dobře nevím, proč.
|
||
|
Časová prodleva: 10 let
|
|||
0