Autor Zpráva
kabanos
Profil *
Je možné nějak udělat, abych mohl listovat na mých stránkách dopředu a dozadu pomocí nadefinovaných kláves? Mám stránku s obrázky. Při kliknutí na nějaký se zobrazí detail a dvě tlačítka - předchozí a další. Je možné jim předdefinovat nějakou klávesu? Jak?
Joker
Profil
kabanos
Možné to je... přes události onkeypress, případně onkeyup/onkeydown
kabanos
Profil *
Už to mám:

<html>
<head>
<title></title>
<script type="text/javascript">
function go(evt){
var key = (typeof evt.which != "undefined") ? evt.which : event.keyCode;
if (String.fromCharCode(key)=="g"){window.location="http://www.google.com";}
if (String.fromCharCode(key)=="s"){window.location="http://www.seznam.cz";}
}
</script>
</head>
<body onKeyPress="go(event)">
G - Google
<br>
S - Seznam
</body>
</html>
Chamurappi
Profil
Reaguji na kabanos:
Viz Navigace šipkami na klávesnici.
kabanos
Profil *
Chamurappi
Dobrý typ:-)) Navigace šipkami na klávesnici

Jak ten kód ale upravit, abych tu funkci mohl spouštět i z jiného iframu nebo z parent iframu.

Z nadřazeného to dělám přes:
<body onKeyPress="window.frames.pis.change_text(event);">

Z jiného iframu name="text" to volám přes:
<body onKeyPress="parent.pis.change_text(event);">

Iframe s funkcí je name="pis": (zde to funguje, pokud to nazabalim do funkce change_text(e); a vynechám onkeypress v body, jinak to taky nefunguje)

Dík

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">
function change_text(e) {
document.documentElement.onkeydown = function(e) {
var event = e || window.event;
var target = event.target || event.srcElement;
if (target.tagName == "INPUT" || target.tagName == "TEXTAREA") return true;
var akce = {
37: function() {document.getElementById('textik').innerHTML='doleva ';},
38: function() {document.getElementById('textik').innerHTML='nahoru ';},
39: function() {document.getElementById('textik').innerHTML='doprava ';},
40: function() {document.getElementById('textik').innerHTML='dolu ';}
};
var a = akce[event.keyCode];
return a ? a() : true;
}
}
</script>
</head>
<body onKeyPress="change_text(event);">
<div id="textik"></div>
</body>
</html>
kabanos
Profil *
Prosim, jak upravim kód, aby se to dalo volat jako funkce? Problém bude asi s event, ale moc se v tom nevyznám.
Dík
kabanos
Profil *
Už jsem na to přišel:-))

Na vlastní stránce (pis):
<script type="text/javascript">document.documentElement.onkeydown=change_page;</script>

Z iframu (text):
<script type="text/javascript">document.documentElement.onkeydown=function ch(e) {var event = e || window.event;parent.pis.change_page(event);};</script>

Z nadřazeného framesetu:
<script type="text/javascript">document.documentElement.onkeydown=function ch(e) {var event = e || window.event;window.frames.pis.change_page(event)};</script>

Volaná funkce:
function change_text(e) {
var event = e || window.event;
var target = event.target || event.srcElement;
if (target.tagName == "INPUT" || target.tagName == "TEXTAREA") return true;
var akce = {
37: function() {document.getElementById('textik').innerHTML='doleva ';},
38: function() {document.getElementById('textik').innerHTML='nahoru ';},
39: function() {document.getElementById('textik').innerHTML='doprava ';},
40: function() {document.getElementById('textik').innerHTML='dolu ';}
};
var a = akce[event.keyCode];
return a ? a() : true;
}

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: