webForumDet fria alternativet

Knapptryck

JavaScriptur Javascript

22 svar · 484 visningar · startad av #L#

#L#Medlem sedan juli 20021 363 inlägg
#1

Tänkte bygga en lite knappfunktion som öppnar en "dold" sida ...

ex.

När fönstret är aktivt och man klickar ctr+shift+s så skall ett nytt specifikt fönster öppnas ...

möjligt?

snabbt svar belönas med ett "tack" ;)

#L#Medlem sedan juli 20021 363 inlägg
#2

tuddiloo..

Peter SMedlem sedan dec. 20025 483 inlägg
#3

Jag tror det blir svårt att kombinera de olika tangenterna. Däremot skulle du kunna göra så här:

<script type="text/javascript">
<!--

document.onkeydown = function(){
	if(event.keyCode==16)
		window.open("foo.html","","height=300,width=300");
};

//-->
</script>

I detta exempel kommer ett fönster att öppnas om du trycker på "shift". Det fungerar givetvis även med andra tangenter, men då får du byta ut talet 16 i koden, till motsvarigheten för den önskade tangenten.

Kan även säga att detta endast fungerar i IE.

:)

#L#Medlem sedan juli 20021 363 inlägg
#4

Att det bara funkar i IE är bara bra .. då detta är enda browser jag använder både hemma och i skolan...

hm.. det är svårt att kombinera knappar säger du..

det går inte att lösa så att man är tvungen att trycka på säg två knappar i en följd ...

ex.

f och sen shift

?

Peter SMedlem sedan dec. 20025 483 inlägg
#5

Att trycka på knappar i en viss följd går hur bra som helst. Koden för "Shift"-tangenten och "f" eller vice versa skulle kunna se ut så här:

var n = 0;

document.onkeydown = function(){
	n += event.keyCode;

	if(n==86){
		window.open("foo.html","","height=300,width=300");
		n = 0;
	}
};

:)

JojoxxMedlem sedan juni 20004 308 inlägg
#6

Lite närmare kanske;

sh=0; s=0;
document.onkeydown = function(){
	if(event.keyCode==16) sh=new Date().getTime();
	if(event.keyCode==83) s=new Date().getTime();
	var now=new Date().getTime();
	if(now-sh<500&&now-s<500){
		window.open("foo.html","","height=300,width=300");
	}
}

Tyvärr så genererar [ctrl] inte någon keyCode.

JojoxxMedlem sedan juni 20004 308 inlägg
#7

Peter, där behöver det ju inte vara just [shift] och "F", bara resultatet blir 86 efter ett tag... :)

#L#Medlem sedan juli 20021 363 inlägg
#8

Har inte tangentkoderna tillängliga ... lika bra att jag skriver ut vad jag vill skall hända så det blir rätt gjort direkt :)

Efter jag tryckt på alt,shift,s skall ett popup-fönster (utan statusbar etc, bredd 335px - höjd 420px) öppnas, sökvägen till filen som skall visas i fönstret är "info/stats.asp"

Tack på förhand :)

Peter SMedlem sedan dec. 20025 483 inlägg
#9

Ja, jag märker det :e

Det kanske är ett tecken på att John Blund skulle vilja ha en diskussion med mig nu...

:)

Peter SMedlem sedan dec. 20025 483 inlägg
#10

Tyvärr så genererar [ctrl] inte någon keyCode.

Det var konstigt. Följande genererar iallafall talet 17 för mig:

document.onkeydown = function(){
     alert(event.keyCode);
}

:)

JojoxxMedlem sedan juni 20004 308 inlägg
#11

Ahh... hittade just event.altKey och event.ctrlKey :)

sh=0; s=0;
document.onkeydown = function(){
	if(event.keyCode==16) sh=new Date().getTime();
	if(event.keyCode==83) s=new Date().getTime();
	var now=new Date().getTime();
	if(now-sh<500&&now-s<500&&event.altKey){
		window.open("info/stats.asp","","height=420,width=335");
	}
}
JojoxxMedlem sedan juni 20004 308 inlägg
#12

Det var konstigt. Följande genererar iallafall talet 17 för mig.

Det kan nog skilja från version till version av webbläsare. Jag vet att jag provat förrut utan få någon keyCode på dessa tangenter, men i IE6.0 verkar det fungera i alla fall.

JojoxxMedlem sedan juni 20004 308 inlägg
#13

Detta är dock snyggare;

var keyboard=new Object();
document.onkeyup = function(){ keyboard[event.keyCode]=false; }
document.onkeydown = function(){
	keyboard[event.keyCode]=true;
	if(keyboard[83]&&event.shiftKey&&event.altKey){
		window.open("info/stats.asp","","height=420,width=335");
	}
}

([alt]+[shift]+"s" alltså)

#L#Medlem sedan juli 20021 363 inlägg
#14

Bugar och bockar!

Kalas killar! :)

Peter SMedlem sedan dec. 20025 483 inlägg
#15

Å andra sidan är det ju inte varje dag man skriver kod som involverar keyCode...

:)

Peter SMedlem sedan dec. 20025 483 inlägg
#16

För att det inte skall fungera att endast trycka "alt"+"shift" efter att fönstret "poppat" upp för första gången, kan du modifiera koden lite grand:

document.onkeydown = function(){
	keyboard[event.keyCode]=true;

	if(keyboard[83]&&event.shiftKey&&event.altKey){
		window.open("info/stats.asp","","height=420,width=335");
		[B]keyboard[event.keyCode]=false;[/B]
	}
}

:)

#L#Medlem sedan juli 20021 363 inlägg
#17

Peter S

(Y)

#L#Medlem sedan juli 20021 363 inlägg
#18

oj.. nu kommer inget fönster upp.. piper bara till när jag trycker ner knapparna..

JojoxxMedlem sedan juni 20004 308 inlägg
#19

Peter S skrev:

För att det inte skall fungera att endast trycka "alt"+"shift" efter att fönstret "poppat" upp för första gången...

Du har missat onkeyup-eventet;

document.onkeyup = function(){ keyboard[event.keyCode]=false; }

#L# skrev:

oj.. nu kommer inget fönster upp.. piper bara till när jag trycker ner knapparna..

Kolla så att din tangentbordkombination inte krockar med någon som används av operativet eller Internet Explorer, ellet något annat program. [alt]+[shift]+s funkar bra för mig. [ctrl]+[shift]+"anykey" krockar ofta med ICQ till exempel.

colioneMedlem sedan juni 20014 421 inlägg
#20

[r]Jojoxx han före[/r]

266 ms totalt · 3 externa anrop · v20260731065814-full.c74b5be1
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
264 ms — hämta tråd, inlägg och bilagor (db)