Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125

    tasto destro contestuale

    ciao . potete consigliarmi uno script per un menu sul tasto destro del mouse che pero' sia dinamico...nel senso....se ho una serie di link, a ogni link il menu sara diverso e dovra' apparire solo se sono sopra al link....non se sono in giro per la pagina...
    E' possibile?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    magari entriamo nel dettaglio. Di script ce ne sono infiniti....io non voglio che me lo facciate voi....ma un indirizzamento su cosa analizzare per ottenere quello che voglio....
    lo script che ho trovato (direi ottimo) e' questo
    Codice PHP:

    <HTML><HEAD><TITLE>Titolo</TITLE>
    <
    META http-equiv=Content-Type content="text/html; charset=windows-1252">
    <
    head>
    <
    STYLE>
    #ie5menu {
    BORDER-RIGHTwhite 2px outsetBORDER-TOPwhite 2px outsetFONT-SIZE9ptZ-INDEX1000BACKGROUNDbuttonfaceVISIBILITYhiddenBORDER-LEFTwhite 2px outsetWIDTH100ptCURSOR: default; LINE-HEIGHT13ptBORDER-BOTTOMwhite 2px outsetFONT-FAMILY"MS sans serif"POSITIONabsolute
    }
    .
    menuitems {
    PADDING-RIGHT10ptPADDING-LEFT10pt
    }
    </
    STYLE>
    <
    script language "javascript" type="text/javascript">
    var 
    display_url=0
    function showmenuie5(){
    ie5menu.style.left=document.body.scrollLeft+event.clientX
    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="navy"
    event.srcElement.style.color="white"
    if (display_url==1)
    window.status=event.srcElement.url
    }
    }
    function 
    lowlightie5(){
    if (
    event.srcElement.className=="menuitems"){
    event.srcElement.style.backgroundColor=""
    event.srcElement.style.color="black"
    }
    }
    function 
    jumptoie5(){
    if (
    event.srcElement.className=="menuitems")
    window.location=event.srcElement.url
    }
    function 
    sorgente()
    {
    location.href "view-source:" location;
    }
    function 
    autori()
    {
    alert("Carmelo Scuderi")
    }
    var 
    bookmarkurl="http://xxxxxxxxx/xxxxx";
    var 
    bookmarktitle="xxxxx - xxxxxxx";
    function 
    addbookmark(){
    if (
    document.all)
    var 
    imgFav= new Image();
    imgFav.src="http://web.tiscali.it/Carmelo/favicon.ico";
    window.external.AddFavorite(bookmarkurl,bookmarktitle)
    }
    function 
    homepage() { 
    if(
    document.all)
    document.body.style.behavior='url(#default#homepage)';
    document.body.setHomePage('http://web.tiscali.it/Carmelo');
    }
    document.oncontextmenu=showmenuie5
    if (document.all&&window.print)
    document.body.onclick=hidemenuie5
    var _ap unescape"%27" );

    </SCRIPT>
    </head>
    <BODY vLink=blue>

    <DIV id=ie5menu onmouseover=highlightie5() onclick=jumptoie5() 
    onmouseout=lowlightie5()>
    <DIV class=menuitems 
    onmouseover="window.status='Aggiungi xxxxxx tra i Preferiti';return true" 
    onmouseout="window.status='';return true" 
    url="java-script:void(addbookmark())"><U>A</U>ggiungi a Preferiti...</DIV>
    <DIV class=menuitems 
    onmouseover="window.status='Fai di xxxx la tua Home Page';return true" 
    onmouseout="window.status='';return true" 
    url="java-script:homepage()">I<U>m</U>posta Home page</DIV>
    <HR>
    <DIV class=menuitems 
    onmouseover="window.status='Informazioni sugli autori di Morpheus';return true" 
    onmouseout="window.status='';return true" 
    url="java-script:autori()">A<U>u</U>tori</DIV>
    <DIV class=menuitems 
    onmouseover="window.status='Visualizza l'+_ap+'origine Html della pagina';return true" 
    onmouseout="window.status='';return true" 
    url="java-script:sorgente()"><U>C</U>odice sorgente</DIV>
    <HR>
    <DIV class=menuitems 
    onmouseover="window.status='Ricarica il contenuto della pagina corrente';return true" 
    onmouseout="window.status='';return true" 
    url="java-script:location.reload()">Aggi<U>o</U>rna</DIV>
    <DIV class=menuitems 
    onmouseover="window.status='Torna alla pagina precedente';return true" 
    onmouseout="window.status='';return true" 
    url="java-script:history.back()"><U>I</U>ndietro</DIV>
    <DIV class=menuitems 
    onmouseover="window.status='Torna alla pagina successiva';return true" 
    onmouseout="window.status='';return true" 
    url="java-script:history.forward()">A<U>v</U>anti</DIV>
    <HR>
    <DIV class=menuitems 
    onmouseover="window.status='Contatta Morpheus via email';return true" 
    onmouseout="window.status='';return true" 
    url="mailto:xxxxx@hotmail.com"><U>E</U>-m@il</DIV></DIV>
    <CENTER>

    <B class="bluetto">Clicca con il tasto 
    destro del mouse[/B]</CENTER></BODY></HTML> 
    ora....non vorrei che me lo facesse su tutta la pagina....
    Consigli?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    up....
    Ma come e' possibile che ci sono 2000 script per il tasto destro ....ma tutti quanti appaiono in qualsiasi punto della pagina....???? nessuno ci ha mai pensato o e' veramente complicato?

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da stiffa
    lo script che ho trovato (direi ottimo) e' questo
    ottimo proprio no: non degrada, restituisce soltanto errori javascript su browser diversi da IE
    ora....non vorrei che me lo facesse su tutta la pagina....
    Consigli?
    seguendo la sintassi solo-IE del resto dello script,
    se window.event.srcElement rappresenta l' oggetto su cui e' stato fatto click-destro
    in window.event.srcElement.tagName avrai il tipo di tag,
    in window.event.srcElement.id il suo id, se ce l' ha...

    risali l' alberatura DOM finche' non viene trovato l' id che cerchi, oppure si arriva al body (= il click e' avvenuto su area non interessata) x es.
    codice:
    function contiene(el,idx){
    	while(el.tagName!='BODY'){
    		if(el.id==idx) return true;
    		else el=el.parentNode;
    	}
    	return false;
    }
    
    
    function showmenuie5(){
    	if(window.event){
    		if(contiene(window.event.srcElement,'miodiv')){
    			ie5menu.style.left=document.body.scrollLeft+event.clientX
    			ie5menu.style.top=document.body.scrollTop+event.clientY
    			ie5menu.style.visibility="visible"
    			return false
    		}
    		else return true
    	}
    }
    se il click parte da un tag che e' contenuto in elemento con id="miodiv" mostra il menu' contestuale personalizzato, altrimenti quello abituale
    ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    ti ringrazio...pian piano comincio a capire o forse no....ma ho bisogno di aiuto.
    Innanzitutto avevi ragione...su mozilla dava errori....indi per cui sono passato a questo script
    Codice PHP:
    <HTML>

    <
    HEAD>
    <
    TITLE>HTML.it il sito italiano sul Web publishing</TITLE>

    <
    style>
    A:linkA:visited text-decorationnone }
    A:hover text-decorationunderline }
    </
    style>

    <
    style type="text/css">
    .
    link{
    cursor:hand;
    text-decoration:none;
    font-size:11px;
    font-family:verdana;
    color:#000000;
    padding:3px;
    }

    .
    normtext{
    cursor:default;
    color:#006699;
    font-size:11px;
    font-family:verdana;
    font-weight:bold;
    padding:3;
    }

    #conmenu {
    position:absolute;
    top:0px;
    left:0px;
    visibility:hidden;
    background-color:#f0f0f0;
    layer-background-color:#f0f0f0;
    border:outset 2px;
    font-size:11px;
    font-family:verdana;
    font-weight:normal;
    width:150px;
    padding:1 2 0 2;
    z-index:2;
    }

    #conshadow{
    position:absolute;
    top:0px;
    left:0px;
    visibility:hidden;
    background-color:black;
    layer-background-color:#333333;
    z-index:0;
    }
    </
    style>



    </
    HEAD>
    <
    BODY  BGCOLOR="white" vlink="blue" link="blue">
    <
    script language="javascript">

    var 
    menuNormColor="#f0f0f0";
    var 
    menuHoverColor="#6873f8";
    var 
    enableShadow=true;
    var 
    enableShadowTransparency=true;
    var 
    disableNS4=false;

    var 
    menu=new Array();
    menu[0]=['<div align=\"center\">.: JavaScript :.</div>'];
    menu[1]=['Alert Box' 'javascript:alert(\'Ma ciao! Io sono un altert!\')' ''];
    menu[2]=['Contact' 'mailto:lorenzofortim@html.it' ''];
    menu[3]=['Stampa' 'javascript:window.print();' ''];
    menu[4]=['Aggiorna la pagina' 'javascript:history.go(0)'''];
    menu[5]=['Codice sorgente' 'view-source:'+location.href''];
    menu[6]=['<div align="center">.: Link utili :.</div>'];
    menu[7]=['Html.it' 'http://www.html.it' '_blank'];
    menu[8]=['Forum' 'http://forum.html.it' '_blank'];
    menu[9]=['Freephp' 'http://freephp.html.it' '_blank'];
    menu[10]=['<div align="center">Tasto destro per chiudere il menù</div>'];



    ns4 = (navigator.appName.indexOf("Netscape")>=&& document.layers)? true false;
    ie4 = (document.all && !document.getElementById)? true false;
    ie5 = (document.all && document.getElementById)? true false;
    ns6 = (document.getElementById && navigator.appName.indexOf("Netscape")>=)? truefalse;
    w3c = (document.getElementById)? true false;
    var 
    mx=0;
    var 
    my=0;
    var 
    conmenu;
    var 
    conshadow;
    var 
    windowloaded=false;
    var 
    opened=false;
    var 
    ch=0;
    var 
    cw=0;

    function 
    setc(ref,c){
    if(
    ns4)ref.bgColor=c;
    else 
    ref.style.backgroundColor=c;
    }

    var 
    txt='<div id="conshadow"> </div>';
    txt+='<div id="conmenu">';
    for(
    i=0;i<menu.length;i++){
    if(
    menu[i].length<3){
    txt+='<ilayer><div class="normtext">'+menu[i][0]+'</div></ilayer>';
    }else{
    txt+=(ns4)?'<ilayer width="100%" bgcolor="'+menuNormColor+'"><layer width="100%" onmouseover="setc(this,\''+menuHoverColor+'\')" onmouseout="setc(this,\''+menuNormColor+'\')">':'<div class="link" style="background-color:'+menuNormColor+'" onmouseover="setc(this,\''+menuHoverColor+'\')" onmouseout="setc(this,\''+menuNormColor+'\')">';
    txt+='[url="'+menu[i][1]+'"]'+menu[i][0]+'[/url]';
    txt+=(ns4)?'</layer></ilayer>':'</div>';
    }}
    txt+='</div>';
    document.write(txt);

    function 
    ns4trap(evt){
    if(
    evt.which==2||evt.which==3){
    showmenu();
    return 
    false;
    }}

    function 
    showmenu(){
    if(
    windowloaded){
    if(
    opened){
    if(
    ns4){
    conmenu.visibility="hide";
    conshadow.visibility="hide";
    conmenu.moveTo(0,0);
    conshadow.moveTo(0,0);
    }else{
    conmenu.style.visibility="hidden";
    conshadow.style.visibility="hidden";
    conmenu.style.left='0px';
    conmenu.style.top='0px';
    conshadow.style.left='0px';
    conshadow.style.top='0px';
    }
    opened=false;
    }else{
    opened=true;
    var 
    wh=(ie4||ie5)?document.body.clientHeight:window.innerHeight;
    var 
    ww=(ie4||ie5)?document.body.clientWidth:window.innerWidth;
    var 
    sx=(ie4||ie5)?document.body.scrollLeft:pageXOffset;
    var 
    sy=(ie4||ie5)?document.body.scrollTop:pageYOffset;
    if(
    ie4||ie5){
    if(
    mx+cw+13>=ww)mx=mx-cw-13;
    if(
    my+ch+13>=wh)my=my-ch-13;
    }else{
    if(
    mx+cw-sx+13>=ww)mx=mx-cw-13;
    if(
    my+ch-sy+13>=wh)my=my-ch-13;
    }
    if(
    ns4){
    conmenu.moveTo(mx,my);
    conmenu.visibility="show";
    conshadow.moveTo(mx+8,my+8);
    if(
    enableShadow)conshadow.visibility="show";
    }else{
    conmenu.style.left=mx+((ie4||ie5)?sx:0)+'px';
    conmenu.style.top=my+((ie4||ie5)?sy:0)+'px';
    conshadow.style.left=mx+10+((ie4||ie5)?sx:0)+'px';
    conshadow.style.top=my+10+((ie4||ie5)?sy:0)+'px';
    setTimeout('conmenu.style.visibility="visible"; if(enableShadow)conshadow.style.visibility="visible"; ',50);
    }}}}

    if(
    ns4&&!disableNS4){
    document.captureEvents(Event.MOUSEDOWN|Event.MOUSEMOVE);
    document.onmousedown=ns4trap;
    }else{
    document.oncontextmenu=function(){
    showmenu();
    return 
    false;
    }}

    document.onmousemove=function(evt){
    mx=(ie4||ie5)?event.clientX:evt.pageX;
    my=(ie4||ie5)?event.clientY:evt.pageY;
    }

    window.onload=function(){
      
    windowloaded=true;
      
    conmenu=(ns4)?document.layers['conmenu']:(ie4)?document.all['conmenu']:document.getElementById('conmenu');
      
    conshadow=(ns4)?document.layers['conshadow']:(ie4)?document.all['conshadow']:document.getElementById('conshadow');
      
    ch=(ns4)?conmenu.document.height:(ie4||ie5)?conmenu.clientHeight:conmenu.offsetHeight;
      
    cw=(ns4)?conmenu.document.width:(ie4||ie5)?conmenu.clientWidth:conmenu.offsetWidth;
      if(
    ns4){
      
    conshadow.clip.height=conmenu.document.height;
      
    conshadow.clip.width=conmenu.document.width;
      
    conmenu.clip.bottom=conmenu.document.height;
      }else{
      if(
    enableShadowTransparency){
      if(
    ie4||ie5)conshadow.style.filter="alpha(opacity=50)";
      if(
    ns6||!ie4||!ie5)conshadow.style.MozOpacity=.5;
      }
      
    conshadow.style.height=ch+((ie4||ie5)?4:0);
      
    conshadow.style.width=cw+((ie4||ie5)?4:0);
      }

    }

    window.onresize=function(){
    if(
    ns4)setTimeout('history.go(0)',200);

    }

    </script>

    </BODY>
    </HTML> 
    ora.....io sono inesperto e questo script e' complicatissimo per me....
    protresti dirmi dove posso modificare il codice? il discorso di risalire all'id e' perfetto perche applicherei questo script a un tree menu, diciamo tipo esplora risorse...

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    poi sto provando a farmi l'alert di window.event.srcElement .....ma mi da sempre indefinito....
    Ho provato da piccoli passi come clicca

    function prova(){
    alert(window.event.srcElement );
    }

    assolutamente sbagliata

  7. #7
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    link a dove hai preso lo script,
    facendo copia-incolla non funziona e non ho proprio tempo x sistemarlo

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    http://www.lorenzone.it/javascript/f...php?idfile=124


    Sto provando a studiarmi questo script...ma direi che e' quasi impossibile. Chiedo quindi solo delle cose specifiche che magari mi aiuteranno a fare qualche passo. La domanda e' sempre quella......qual'e' la logica per intercettare da tasto destro su elementi DOM (capire come distinguere determinati punti dal resto della pagina)?

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    per quelli a cui interessa il discorso proseguo con questo post.
    Allora....sono riuscito a far apparire il menu tasto dx dove volevo....per ora ho una serie di link e ognuno di loro all'evento oncontextmenu() chiama il metodo showmenu() dello script sopra citato....ora....sono acora un paio le cose che vorrei fare...Prima di tutto farlo sparire con il tasto sinistro del mouse...e se possibile...con qualsiasi click sulla pagina vorrei far apparire un secondo menu....
    Come faccio a dire....in qualsiasi punto sulla pagina (escluso dove trovo oggetti che chiamano metodo oncontextmenu) mi faccia showmenu2() ????

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    scusandomi per la duplicazione del mio thread, uppo questo.
    Sono riuscito a fare un po di cose...ma ora non riesco a fare questa piccola modifica....

    Del codice sopra citato...vorrei che alla pressione del pulsante il menu abbia un opzione in piu ( oppure che una di quelle che ci sono gia diventi diversa-.....tanto e' uguale.)

    Spero che qualcuno ascolti questa richiesta disperata di aiuto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.