/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Højreklik-menu i IE5+
Fra : Brian Emilius


Dato : 30-03-05 14:39

Hej NG

Jeg har fundet et javascript til at vise en lille menu, når man
højreklikker. Jeg vil gerne modificere dette script så det kun virker på
enkelte elementer på siden (eksempelvis nogle billeder eller noget
tekst) og indholdet af menuen skal afhænge af den ting, man klikker på.

Er der nogen, der kan hjælpe med dette?

<!-- SCRIPT -->

<HEAD>

<style>
<!--
..skin0 {
position:absolute;
text-align:left;
width:200px;
border:2px solid black;
background-color:menu;
font-family: sans-serif;
font-size: 12px;
line-height:20px;
cursor:default;
visibility:hidden;
}
..skin1 {
cursor:default;
font:menutext;
position:absolute;
text-align:left;
font-family: sans-serif;
font-size: 12px;
width:120px;
background-color:menu;
border:1 solid buttonface;
visibility:hidden;
border:2 outset buttonhighlight;
}
..menuitems {
padding-left:15px;
padding-right:10px;
}
-->
</style>

<SCRIPT LANGUAGE="JavaScript1.2">

var menuskin = "skin1"; // skin0, or skin1
var display_url = 0; // Show URLs in status bar?
function showmenuie5() {
var rightedge = document.body.clientWidth-event.clientX;
var bottomedge = document.body.clientHeight-event.clientY;
if (rightedge < ie5menu.offsetWidth)
ie5menu.style.left = document.body.scrollLeft + event.clientX -
ie5menu.offsetWidth;
else
ie5menu.style.left = document.body.scrollLeft + event.clientX;
if (bottomedge < ie5menu.offsetHeight)
ie5menu.style.top = document.body.scrollTop + event.clientY -
ie5menu.offsetHeight;
else
ie5menu.style.top = document.body.scrollTop + event.clientY;
ie5menu.style.visibility = "visible";
return false;
}
function hidemenuie5() {
ie5menu.style.visibility = "hidden";
}
function highlightie5() {
if (event.srcElement.className == "menuitems") {
event.srcElement.style.backgroundColor = "highlight";
event.srcElement.style.color = "white";
if (display_url)
window.status = event.srcElement.url;
}
}
function lowlightie5() {
if (event.srcElement.className == "menuitems") {
event.srcElement.style.backgroundColor = "";
event.srcElement.style.color = "black";
window.status = "";
}
}
function jumptoie5() {
if (event.srcElement.className == "menuitems") {
if (event.srcElement.getAttribute("target") != null)
window.open(event.srcElement.url, event.srcElement.getAttribute("target"));
else
window.location = event.srcElement.url;
}
}
// End -->
</script>
</HEAD>

<BODY>

<div id="ie5menu" class="skin0" onMouseover="highlightie5()"
onMouseout="lowlightie5()" onClick="jumptoie5();">
<div class="menuitems" url="?aabn">Åbn</div>
<div class="menuitems" url="?show">Vis i browser</div>
<div class="menuitems" url="?rename">Omdøb</div>
<div class="menuitems" url="?delete">Slet</div>
<hr>
<div class="menuitems" url="">Egenskaber</div>
</div>
<script language="JavaScript1.2">
if (document.all && window.print) {
ie5menu.className = menuskin;
document.oncontextmenu = showmenuie5;
document.body.onclick = hidemenuie5;
}
</script>

<img src="etbillede.gif" />
<img src="etandetbillede.gif" />

--
Venlig hilsen
Brian Emilius

 
 
Brian Emilius (30-03-2005)
Kommentar
Fra : Brian Emilius


Dato : 30-03-05 14:41

Og så glemte jeg at skrive at hvis man højreklikker et andet sted på
siden, skal der ikke komme nogen menu (heller ikke IE's standard-menu).
--
Venlig hilsen
Brian Emilius

Erik Ginnerskov (31-03-2005)
Kommentar
Fra : Erik Ginnerskov


Dato : 31-03-05 00:32

Brian Emilius wrote:
> Og så glemte jeg at skrive at hvis man højreklikker et andet sted på
> siden, skal der ikke komme nogen menu (heller ikke IE's
> standard-menu).

Hvorfor vil du pille ved højreklik-menuen. Den er brugerens værktøj, ikke
dit legetøj. Den menu indeholder meget andet en mulighed for at kopiere dine
billeder eller kildekode.

I øvrigt kan du alligevel ikke hindre kopiering på andre måder end ved at
lade være med at lægge det ud på nettet:

http://html-faq.dk/1014.asp

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk/



Brian Emilius (31-03-2005)
Kommentar
Fra : Brian Emilius


Dato : 31-03-05 11:57

Erik Ginnerskov skrev:
> Brian Emilius wrote:
>
>>Og så glemte jeg at skrive at hvis man højreklikker et andet sted på
>>siden, skal der ikke komme nogen menu (heller ikke IE's
>>standard-menu).
>
>
> Hvorfor vil du pille ved højreklik-menuen. Den er brugerens værktøj, ikke
> dit legetøj. Den menu indeholder meget andet en mulighed for at kopiere dine
> billeder eller kildekode.
>
> I øvrigt kan du alligevel ikke hindre kopiering på andre måder end ved at
> lade være med at lægge det ud på nettet:
>
> http://html-faq.dk/1014.asp
>

Mine årsager er vel egentlig ligemeget - mit spørgsmål kører på hvordan
det kan lade sig gøre. Det er jo ikke sikkert at standard-menuen behøves
at være brugerens værktøj på den side, jeg har tænkt mig at bruge det på.

--
Venlig hilsen
Brian Emilius

Lasse Reichstein Nie~ (31-03-2005)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 31-03-05 01:52

Brian Emilius <msn@emilius.dk> writes:

> Jeg har fundet et javascript til at vise en lille menu, når man
> højreklikker. Jeg vil gerne modificere dette script så det kun virker
> på enkelte elementer på siden (eksempelvis nogle billeder eller noget
> tekst) og indholdet af menuen skal afhænge af den ting, man klikker på.

I IE5+ bestemmer man hvad der sker når man højreklikker med eventen
"contextmenu". Eksempel:

<body oncontextmenu="return false">

vil slå højrekliksmenuen fra på body-elementet.


> <!-- SCRIPT -->
>
> <HEAD>

Er dette hele din fil? For så mangler der en DOCTYPE-erklæring.
(og det er ikke nødvendigt at sende hele filen med her, det
er bedre at give et link til en "live" version).

> <style>

Skal være <style type="text/css">. Type-attributten er påkrævet.

> <!--

HTML-kommentarer er ikke nødvendige for at skjule script- eller
style-elementers indhold. Alle nuværende browsere kender de tags.

> <SCRIPT LANGUAGE="JavaScript1.2">

Skal være
<script type="text/javascript">
type-attributten er påkrævet. Language-attributten er "deprecated",
og hvis man alligevel bruger den, så skal man *ikke* bede om
Javascript version 1.2 (som er en version der er subtilt forskellig
fra tidligere og senere versioner på nogle få punkter, og som nogle
browsere skifter til at bruge når man beder om det ... men ikke IE)

....
> <script language="JavaScript1.2">
> if (document.all && window.print) {

Her testes for om man faktisk bruger IE. Det fejler bare, fordi der
også er andre browsere der understøtter document.all og window.print.

Enten ved du at din side kun bruges af folk der bruger IE5+, eller
også bør du lade være med den her slags scripts :)

> ie5menu.className = menuskin;
> document.oncontextmenu = showmenuie5;

Her kunne man så skrive

document.oncontextmenu = function() { return false; };

og

document.images[0].oncontextmenu = showmenuie5;
document.images[1].oncontextmenu = showmenuie5;

eller hvad man nu vil putte menuen på.

Dette skal dog stå *senere* på siden end de elementer menuen skal på
(eller pakkes ind i en funktion der kaldes når siden er loadet færdig);


....
> <img src="etandetbillede.gif" />

Skriver du HTML eller XHTML?


Jeg antager at du skriver til et miljø, fx et firmas intranet, hvor alle
skal bruge IE5 til at tilgå siden. Ellers laver du en menu der kun kan
bruges af nogel af brugerne, og det betyder sikkert at andre vil mangle
den funktionalitet.


(Nogle folk kan ikke lide sider der piller ved deres browsers navigation.
Jeg er selv en af dem, men har ingen skrupler ved at fortælle hvordan man
gør det i IE. Jo flere sider der er af den slags, jo flere skifter nok
til en browser der ikke lader fremmede sider bestemme over den slags :)

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

Brian Emilius (31-03-2005)
Kommentar
Fra : Brian Emilius


Dato : 31-03-05 12:00

Lasse Reichstein Nielsen skrev:

> Jeg antager at du skriver til et miljø, fx et firmas intranet, hvor alle
> skal bruge IE5 til at tilgå siden. Ellers laver du en menu der kun kan
> bruges af nogel af brugerne, og det betyder sikkert at andre vil mangle
> den funktionalitet.
>
>
> (Nogle folk kan ikke lide sider der piller ved deres browsers navigation.
> Jeg er selv en af dem, men har ingen skrupler ved at fortælle hvordan man
> gør det i IE. Jo flere sider der er af den slags, jo flere skifter nok
> til en browser der ikke lader fremmede sider bestemme over den slags :)
>
> /L

Det er korrekt, jeg er i gang med at skrive et intranet, så antallet af
brugere er begrænset og jeg er blevet bedt om at lave det til IE5 eller
derover.

--
Venlig hilsen
Brian Emilius

Brian Emilius (31-03-2005)
Kommentar
Fra : Brian Emilius


Dato : 31-03-05 20:03

Tak for dit svar. Nu mangler jeg bare at få 'url' i min egen menu til at
være forskellig fra element til element. Hvordan gør jeg det?

--
Venlig hilsen
Brian Emilius

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste