Avatar billede walker Nybegynder
21. juli 2002 - 00:32 Der er 10 kommentarer og
1 løsning

Højreklik på siden...

Hej
Kan nogen fortælle mig hvordan jeg kalder en JS funktion på min HTML side når der højreklikkes. På siden er der en IFRAME, hvor der loades div. sider, som ikke kan ændres, men højreklik-funktionen skal virke på hele siden.
Jeg bruger linien:

    oncontextmenu=new Function("hojreklik();return false");

Men det virker ikke i IFRAME'n... Jeg har prøvet at ligge en DIV og SPAN over, men så kan jeg ikke bruge venstre klik til evt. links på siden i IFRAME'n...

Kan nogen hjælpe mig? :-)
Avatar billede esoulman Nybegynder
21. juli 2002 - 00:35 #1
Hvorfor vil du disable højreklik? Folk kan få koden alligevel - lige meget hvad du gør....
Avatar billede walker Nybegynder
21. juli 2002 - 00:38 #2
Det er ikke for at disable, men for at "trigge" en bestemt funktion :-)
Avatar billede esoulman Nybegynder
21. juli 2002 - 00:40 #3
Oh.. sorry - jeg var lidt for hurtig dér :)
Avatar billede walker Nybegynder
21. juli 2002 - 00:43 #4
Det er bare ok :-)
Avatar billede =maddog= Nybegynder
21. juli 2002 - 00:45 #5
du kan ikke lave eventCaptures på externe sider, da det strider mod sikkerhedsstandarderne for JavaScript. Hvis du har rettigheder til siderne der vises i IFrames (altså det er dine egne) kan du sætte den samme funktion ind i de sider der loades.
Avatar billede walker Nybegynder
21. juli 2002 - 00:54 #6
Ok. Fair nok, men hvordan får jeg så fat i funktionen på index siden? med noget 'parent.frame.document' eller sådan noget?
Avatar billede =maddog= Nybegynder
21. juli 2002 - 01:01 #7
du kan prøve at sætte den her i parent siden. Den er ikke testet igennem men skulle virke.
Den forsøger at fange oncontextmenu i Iframen, og hvis det lykkes udføres alerten "Besked ved højreklik". Hvis der ikke kan laves eventCapture (Altså du har ikke rettigheder) gives alerten "Vi kunne ikke". Hvad de to respektive alerts skal er op til dig.
Bemærk at der kun laves eventCapture en gang (ved loading af hovedsiden. Du bliver nød til at lave en recapture hver gang der laves et nyt page load i iframen. kan sikkert gøres med en onclick men er ikke sikker.
Iframen jeg har testet på havde id="if" og loadede en extern side. Jeg tester lige på en intern (hvor jeg har rettigheder) og vender tilbage.

onload = function() {
try {
  document.getElementById('if').contentWindow.oncontextmenu = function() {
    alert("Besked ved højreklik");
    return false;
  }
} catch (ex) {
  alert("Vi kunne ikke");
}
}
Avatar billede =maddog= Nybegynder
21. juli 2002 - 01:05 #8
ok lille fejl.
onload = function() {
try {
  document.getElementById('if').contentWindow.document.oncontextmenu = function() {
    alert("Besked ved højreklik");
    return false;
  }
} catch (ex) {
  alert("Vi kunne ikke");
}
}
Avatar billede =maddog= Nybegynder
21. juli 2002 - 01:13 #9
nej det bliver for svært og tungt....
jo du skal bruge
parent.navnetPaaFunktionen(argumenter);
Avatar billede walker Nybegynder
21. juli 2002 - 01:18 #10
Ok, jeg bruger "parent" metoden :-) Må jo finde en måde at kode det ind på siderne, og det er jo også OK... Det havde jo bare været en del mere elegant...
Takker aligevel :-)
Avatar billede =maddog= Nybegynder
21. juli 2002 - 01:36 #11
jeg ved at det kan lade sig gøre at 'recapture' ved ny sideload i NS4 (hvor det nærmest er en nødvendighed for at få <layer> til at makke ret) kunne bare ikke lige på stående fod lave det i IE/NS5+. det er et lidt svært projekt der kræver omtanke og tid. håber ikke du føler dig spist af med den anden løsning.
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

IT-JOB

Fælles AI

AI Lead

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger IT-supporterelever til Lokal IT på Aalborg Kaserne

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Solution Manager til Cyberdivisionen