webForumDet fria alternativet

OnKeyPress

14 svar · 380 visningar · startad av Asa

AsaMedlem sedan dec. 20011 860 inlägg
#1

Finns det något javascript där man kollar ifall man trycker på någon tangent på tangentbordet?

Om man inte trycket ska en metatagg köras:

If Not onkeyPress Then
<meta http-equiv="refresh" content="10">
End If

Fast med javascript såklart..

Jesper TMedlem sedan nov. 20017 144 inlägg
#2

Denna funkar om man håller inne någon knapp när man uppdaterar sidan, men endast en gång. Varför vet jag inte.

<script type="text/javascript" language="JavaScript">
<!--
document.onkeypress = refr; 
function refr(){ 
document.write("<meta http-equiv=refresh content=10>")
}
//--> 
</script>
JojoxxMedlem sedan juni 20004 308 inlägg
#3

Om vi hoppar över meta-taggen och använder javascript för den funktionen också så är det enkelt:

<script language="JavaScript" type="text/javascript">
var refresh=setTimeout("location.reload(true)",10000);
document.onkeypress=function(){
	clearTimeout(refresh);
}
</script>
Jesper TMedlem sedan nov. 20017 144 inlägg
#4

Ahaaa, det är så man gör.
Fick visserligen inte det att funka, men men.

AsaMedlem sedan dec. 20011 860 inlägg
#5

Ska testa och återkommer om det ej funkar för mig...

Ska detta funka i alla webbläsare?!?

JojoxxMedlem sedan juni 20004 308 inlägg
#6

Nej, inte fungerar det i alla webbläsare. Vilket script gör det? :) Men de flesta. Netscape 4+, IE5+, Mozilla, Opera 6+ (skulle jag gissa).

AsaMedlem sedan dec. 20011 860 inlägg
#7

Verkade ej funka...

JojoxxMedlem sedan juni 20004 308 inlägg
#8

Vilken webbläsare fungerar det inte i?

Jesper TMedlem sedan nov. 20017 144 inlägg
#9

I.E. 6.0

AsaMedlem sedan dec. 20011 860 inlägg
#10

Precis det ja...

Jesper TMedlem sedan nov. 20017 144 inlägg
#11

Det verkar jojoxx också ha... :q

colioneMedlem sedan juni 20014 421 inlägg
#12

Den funkar inte om ni placerar den i headern nej. Men om ni placerar den i body-elementet funkar den alldeles utmärkt!

JojoxxMedlem sedan juni 20004 308 inlägg
#13

Funkar iofs när jag lägger den i <head> också, men det kan vara ett timing-problem - d.v.s. att objektet document inte är definierat innan <body> är definierad. Släng det i <body> och verifiera att det fungerar med ex;

<script language="JavaScript" type="text/javascript">
var refresh=setTimeout("location.reload(true)",10000);
document.onkeypress=function(){
	clearTimeout(refresh);
}
</script>
<form name="myform">
<input type="text" name="foo" value="0">
</form>
<script language="JavaScript" type="text/javascript">
var i=0;
setInterval("i++; document.forms['myform'].elements['foo'].value=i;",1000);
</script>

Om någon tangent trycks ner kommer sidan inte att refreshas och räknaren kommer att fortsätta förbi 10.

Jesper TMedlem sedan nov. 20017 144 inlägg
#14

Följdfråga möjligen lite O.T. : Hur vet man när man måste köra ett script i head alt. i body?

JojoxxMedlem sedan juni 20004 308 inlägg
#15

Prova :) Nej, men kod som genererar output med document.write() måste ligga i bodyn (eller om det är en funktion måste den anropas därifrån) på det stället där outputen skall hamna. Används objekt på sidan måste dessa finnas genererade innan du försöker anropa dem. Du kan ex. inte skriva/läsa saker från ett formulär som inte genereras förrens senare på sidan. Vid närmare eftertanke brukar det säga sig självt.

Därför kan det vara bra att köra din kod från onload - då vet du att allt är laddat och klart.

Fel:

<script language="JavaScript" type="text/javascript">
document.forms['myform'].elements['mytext'].value="foo";
</script>
<form name="myform">
<input type="text" name="mytext">
</form>

Rätt:

<form name="myform">
<input type="text" name="mytext">
</form>
<script language="JavaScript" type="text/javascript">
document.forms['myform'].elements['mytext'].value="foo";
</script>
251 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
131 ms — hämta forumlista (db)
118 ms — hämta statistik (db)
125 ms — hämta tråd, inlägg och bilagor (db)