Avatar billede snedled Nybegynder
16. april 2003 - 16:34 Der er 18 kommentarer

Iframe reload og tabindex

Jeg har en side med en Iframe der reloader sig selv hver 5. minut.

På samme side har jeg en formular med 5 felter.

Normalt kan man hoppe mellem felterne med tab (evt. sat med tabindex), men når iframen er reloadet, ryger tab-rækkefølgen, og tryk på tab sender dig op i adresselinien.

Er der nogen der har erfaringer med dette problem, eller endnu bedre, er der nogen der kan hjælpe mig med en løsning?


På forhånd tak

/snedled
Avatar billede grunken Nybegynder
16. april 2003 - 16:41 #1
reloader du bare med

parent.frames['iframe']reload();

For så må jeg tilkendegi at det er underligt!
Avatar billede grunken Nybegynder
16. april 2003 - 16:43 #2
parent.frames['iframe'].reload();

mener jeg selvfølgelig!
Avatar billede mm12010 Nybegynder
16. april 2003 - 16:49 #3
du evt prøve at sætte flg. ind lige efter reload()

document.forms[0].focus();
Avatar billede snedled Nybegynder
16. april 2003 - 16:51 #4
Jeg har en funktion i den side der hentes i iframen, der kalder:
    setTimeout("self.location.reload(true)",5000);
Avatar billede mm12010 Nybegynder
16. april 2003 - 16:57 #5
function opdater(){
  self.location.reload();
  document.forms[0].focus();
  }

setTimeout(opdater(),5000);
Avatar billede snedled Nybegynder
16. april 2003 - 17:01 #6
mm> - det virker desværre ikke efter hensigten.
Det er ikke sådan at iframen får focus. Hvis man fx sidder og skriver i felt nummer 2, læægger man ikke mærke til at den reloades, det er først når man trykker på [tab] at problemet kommer....
Avatar billede grunken Nybegynder
16. april 2003 - 17:08 #7
snedled kan godt se problemet, faktisk er det samme galt på eksperten :/

Så må man jo spørge om hvorfor formen skal reloades med ?
Avatar billede snedled Nybegynder
16. april 2003 - 17:12 #8
mm> Jeg har lige testet det igen, og det hjælper ikke. - Selvom første felt får focus (hvilket er lidt irritererende hvis man skriver i felt 2 *s*), så starter tab-knappen i adresselinien.

grunken> Hvordan er det galt her? Formen er ikke i iframen og reloades derfor ikke med. Som sagt kan man skrive laaange tekster mens iframen reloader 50 gange. Problemet kommer først når man trykker tab.
Avatar billede grunken Nybegynder
16. april 2003 - 17:18 #9
hvilket så gør at jeg slet ikke forstår det ikke skulle virke :/
Avatar billede snedled Nybegynder
16. april 2003 - 18:21 #10
Nej det gør jeg heller ikke. - Skal jeg prøve at lægge en testside op?
Avatar billede olebole Juniormester
17. april 2003 - 15:55 #11
<ole>

Hvad er kravspecs - hvad angår browser?

/mvh
</bole>
Avatar billede snedled Nybegynder
17. april 2003 - 16:10 #12
Browseren jeg har testet det i er en IE 6.0 - overvejer om det er en bug?
- jeg har endnu ikke testet det i andre....
/snedled
Avatar billede olebole Juniormester
17. april 2003 - 16:39 #13
Sådan vil det sikkert være i alle browsere. En frame, der loader suger fokus i alle browsere  :)
Men spm'et gik på, om det skal virke i alle browsere - eller i nogle udvalgte
/mvh
Avatar billede olebole Juniormester
17. april 2003 - 16:53 #14
Måske, du kunne lave noget à la:

<script type="text/JavaScript">
var actElm = false;
function setFoc() {
    if (actElm) actElm.focus();
}
</script>
<form>
    <input type="text" name="bla_0" onfocus="actElm=this">
    <input type="text" name="bla_1" onfocus="actElm=this">
    <input type="text" name="bla_2" onfocus="actElm=this">
    <input type="text" name="bla_3" onfocus="actElm=this">
</form>

Og så i dokumentet i iframe'en skrive:
  <body onload="parent.setFoc()">

Så vil jeg tro, din tab-følge restore's ... men jeg er ikke sikker  :)
/mvh
Avatar billede olebole Juniormester
17. april 2003 - 16:57 #15
Hvis det ikke virker, kan du prøve med et beskedent delay:

<script type="text/JavaScript">
var actElm = false;
function setFoc() {
    if (actElm) setTimeout("actElm.focus()",100);
}
</script>
Avatar billede olebole Juniormester
17. april 2003 - 17:01 #16
Spørgsmålet er, hvad den gør med cursoren .... om den evt. springer hen i begyndelsen af feltet (?)
I IE kan du måske bruge:

<script type="text/JavaScript">
var actElm = false;
function setFoc() {
    if (actElm) document.activeElement = actElm;
}
</script>

også her skal du måske prøve med et lille delay.
Avatar billede mm12010 Nybegynder
05. august 2003 - 12:33 #17
lukketid?
Avatar billede snedled Nybegynder
05. august 2003 - 17:07 #18
Ja, måske på tide :-)

Jeg fandt aldrig en egnetlig løsning på problemet, så  istedet satte jeg tiden op fra 5 sek. til 5 min. - det gjorde jo problemet sværere at fremkalde...

Tak for hjælpen allesammen - nogen der vil ha' nogen point?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester