webForumDet fria alternativet
Logga in / Bli medlem

OnKeyPress

JavaScript

14 svar · 380 visningar · startad av Asa

Medlem sedan dec. 20011 860 inlägg
Trådstart#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..

Medlem 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>
Medlem 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>
Medlem sedan nov. 20017 144 inlägg
#4

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

Medlem 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?!?

Medlem 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).

Medlem sedan dec. 20011 860 inlägg
#7

Verkade ej funka...

Medlem sedan juni 20004 308 inlägg
#8

Vilken webbläsare fungerar det inte i?

Medlem sedan nov. 20017 144 inlägg
#9

I.E. 6.0

Medlem sedan dec. 20011 860 inlägg
#10

Precis det ja...

Medlem sedan nov. 20017 144 inlägg
#11

Det verkar jojoxx också ha... :q

Medlem 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!

Medlem 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.

Medlem 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?

Medlem 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>
383 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
119 ms — deklarationer (db)
124 ms — hämta statistik (db)
134 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)