webForumDet fria alternativet

Komma runt funktionalitet vid olika tillfällen

JavaScript

2 svar · 250 visningar · startad av Patrik81

Medlem sedan okt. 2001538 inlägg
Frågan#1

Ledsen för den knepiga rubriken, men den hade blivit så lång annars.

Här är problemet:
Jag pillar lite med en sida, bara för att testa litegranna, och vill använda högerklick till att visa ett lager, istället för att få upp den gråa menyn. (Tanken är inte ett högerklicksskydd, "visa källa" kommer fortfarande att vara tillgänglig).
Allt detta fungerar som det skall just nu, MEN om man hittar en bild man vill tanka ned på sidan, eller man vill högerklicka på en länk, så kommer detta lagret upp. Och det är mindre bra.
Därav min rubrik, att komma runt funktionaliteten. Om man högerklickar på en länk eller bild vill jag inte få upp lagret, bara om man högerklickar på den övriga sidan.

Går detta att lösa på något sätt?
För jag irriterar själv ihjäl mig på högerklicksskydd, så om detta blir mer än bara ett experiment så vill jag inte utsätta eventuella besökare för samma sak själv. :)

<html>
<head>
<script src="layerlib.js"></script>
<script language="JavaScript">
<!--
document.oncontextmenu = function(){
    showLayer('myfunc');
    return false;
}
if(document.layers) {
    window.captureEvents(Event.MOUSEDOWN);
    window.onmousedown = function(e){
        if (e.target==document){
            showLayer('myfunc');
            return false;
        }
    }
} else {
    document.onmousedown = function(){
        if (event.button==2){
            showLayer('myfunc');
            return false;
        }
    }
}
//-->
</script>

<style>
<!--
.myfunc{
    text-align: center;
    background-color:#c0c0c0;
    width:500px;
    height:500px;
    position:absolute;
    left:50%;
    top:50%;
    margin-left:-250px;
    margin-top:-250px;
    border: 1px #000000 solid;
    visibility:hidden;
    z-index:999;
    }
-->
</style>

</head>
<body>

<a href="test.htm?apa=nej">länk</a>

<div class="myfunc" id="myfunc" onMouseOut="hideLayer('myfunc')"> myfunc </div>

</body>
</html>

MVH Patrik

Medlem sedan dec. 20025 483 inlägg
#2
document.oncontextmenu = function(e){
    var node = window.event ? event.srcElement.tagName : e.target.nodeName;
    if (node != "A" && node != "IMG") {
        showLayer('myfunc');
        return false;
    }
}
if(document.layers) {
    window.captureEvents(Event.MOUSEDOWN);
    window.onmousedown = function(e){
        if (e.target==document){
            showLayer('myfunc');
            return false;
        }
    }
} else {
    if (!document.getElementById) {
        document.onmousedown = function(){
	    var node = event.tagName;
            if (event.button==2 && node != "A" && node != "IMG"){
                showLayer('myfunc');
                return false;
            }
        }
    }
}

:)

Medlem sedan okt. 2001538 inlägg
#3

Jamen det är ju helt klockrent. Jag var helt inne på spåret att man måste lägga allt i en funktion och sedan typ anropa funktionen med olika parametrar beroende på vad man klickade på, men denna lösningen vart ju mycket finare (och eftersom min idé inte funkade så var ju Peters lösning utan konkurrens) ;)

:bire och stort tack för en suverän lösning.

MVH Patrik

260 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)