Avatar billede Slettet bruger
01. september 2004 - 18:39 Der er 8 kommentarer og
1 løsning

Fange Shift + klik til Opera

Hej!

Jeg har en context menu som virker i IE, Mozilla og Netscape, men den bruger den ugyldige men nyttige oncontextmenu attribut.

Da Opera har sine problemer med højreklik, vil jeg gerne kunne tilbyde brugere af denne browser at bruge Shift + klik til at simulere højreklik.

Alternativt Ctrl hvis det er mere logisk (der kommer en hjælpetekst til Opera-brugere)

Hvordan gør jeg det?
Avatar billede olebole Juniormester
03. september 2004 - 06:02 #1
<ole>

<script type="text/JavaScript">
var shiftFlag = false;
document.onkeydown = function() {
    if (event.keyCode==16) shiftFlag = true;
    else shiftFlag = false;
}
document.onkeyup = function() {
    shiftFlag = false;
}
document.onclick = function() {
    if (navigator.userAgent.toLowerCase().indexOf("opera")!=-1) {
        if (shiftFlag) document.getElementById("status").innerHTML = "Shift var trykket ned.";
        else document.getElementById("status").innerHTML = "nope ...";
    }
}
</script>

<div id="status"></div>

/mvh
</bole>
Avatar billede olebole Juniormester
03. september 2004 - 06:03 #2
For at undgå fejl i andre browsere skal du nok skrive:

document.onkeydown = function() {
    if (window.event && event.keyCode==16) shiftFlag = true;
    else shiftFlag = false;
}
Avatar billede Slettet bruger
04. september 2004 - 13:21 #3
Det lader til at virke :)

Kan man umiddelbart implementere det således at det kun sker når man klikker på nogle bestemte links?
Avatar billede olebole Juniormester
04. september 2004 - 16:30 #4
Ja, du kan jo lave den ene funktion:

document.onclick = function() {
    if (navigator.userAgent.toLowerCase().indexOf("opera")!=-1) {
        if (shiftFlag) document.getElementById("status").innerHTML = "Shift var trykket ned.";
        else document.getElementById("status").innerHTML = "nope ...";
    }
}

... om til:

function myClick(){
    if (navigator.userAgent.toLowerCase().indexOf("opera")!=-1) {
        if (shiftFlag) document.getElementById("status").innerHTML = "Shift var trykket ned.";
        else document.getElementById("status").innerHTML = "nope ...";
    }
}

Så kan du i udvalgte links skrive:
  <a href="side.html" onclick=myClick()">LINK</a>

Resten skal forblive uændret.
/mvh
Avatar billede Slettet bruger
04. september 2004 - 17:16 #5
Jeg har nu testet lidt, og Opera bruger desværre shift til at åbne sider i et nyt vindue :/

Jeg ville gerne bruge Ctrl (eventkey 17) i stedet så, men det virker kun med dobbeltklik på linket? Lidt underligt, men ok...

Har du et forslag? Jeg kan dog godt leve med dobbeltklik hvis alt kikser
Avatar billede olebole Juniormester
04. september 2004 - 17:38 #6
Det her funker fint i min Opera (WinXP/Opera 7.23):

<script type="text/JavaScript">
var shiftFlag = false;
document.onkeydown = function() {
    if (event.keyCode==17) shiftFlag = true;
    else shiftFlag = false;
}
document.onkeyup = function() {
    shiftFlag = false;
}
function myClick() {
    if (navigator.userAgent.toLowerCase().indexOf("opera")!=-1) {
        if (shiftFlag) document.getElementById("status").innerHTML = "Shift var trykket ned.";
        else document.getElementById("status").innerHTML = "nope ...";
    }
}
</script>

<div id="status"></div>

<a href="#" onclick="myClick()">TEST</a>

------------------------------

Prøv evt. med en URL til forsøget  :)
Avatar billede Slettet bruger
04. september 2004 - 18:24 #7
Jeg tester med WinXP/Opera 7.50 og der skal man altså dobbeltklikke for at det virker ?
Avatar billede Slettet bruger
02. oktober 2004 - 23:09 #8
Nåh, men fik det desværre aldrig til at virke, Opera er nu ikke nem at danse med :/

Send gerne et svar :)
Avatar billede Slettet bruger
12. oktober 2004 - 17:32 #9
øv bøv for Opera :(
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