Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2016
    Messaggi
    13

    Problema compatibilità

    Ciao, ho un grosso problema con un programma in ASP del quale so, molto poco.
    Per farla breve: il programma è stato creato all'epoca di windows XP, con il quale tutt'ora funziona "quasi perfettamente".

    Il problema è nato con windows 7 per cui una funzione banale come il calendario risulta inutilizzabile.

    Sto migrando tutto verso php, ma fino a che non è finito il lavoro, devo far funzionare questa versione.

    codice:
    <%@LANGUAGE="JAVASCRIPT" CODEPAGE="1252"%>
    <%
    
    var Giorni=""
    
    var GS=new Array();
    GS[1]="L";
    GS[2]="M";
    GS[3]="M";
    GS[4]="G";
    GS[5]="V";
    GS[6]="S";
    GS[7]="D";
    
    var TopInit=80;
    var LeftInit=20;
    var AltezzaLayer=22;
    var LarghezzaLayer=30;
    var LarghezzaLayerMese=100;
    var TopMesiInit=20;
    
    var Oggi;
    
    var re = new RegExp('^((0?[1-9])|([12][0-9])|(3[01]))[/]((0?[1-9])|(1[012]))[/]((19)|(20))([0-9]{2})$');
    
    if (re.test(Request.QueryString("Value"))){
        var tmp=Request.QueryString("Value")+"";
        var i=tmp.indexOf("/");
        var gg=tmp.substr(0,i);
        var j=tmp.indexOf("/",i+1);
        var mm=tmp.substr(i+1,j-i-1);
        var aa=tmp.substr(j+1);
    
        Oggi=new Date(aa,mm-1,gg);
    }else{
        Oggi=new Date();
    }
    
    var DataIniziale=  (Oggi.getMonth()+1) + "," + Oggi.getFullYear() + "," + Oggi.getDate();
    var AnnoIniziale=Oggi.getFullYear();
    var tmp;
    
    var Fld2Fill=Request.QueryString("Fld");
    
    var Mesi=new Array();
    Mesi[1]="gennaio";
    Mesi[2]="febbraio";
    Mesi[3]="marzo";
    Mesi[4]="aprile";
    Mesi[5]="maggio";
    Mesi[6]="giugno";
    Mesi[7]="luglio";
    Mesi[8]="agosto";
    Mesi[9]="settembre";
    Mesi[10]="ottobre";
    Mesi[11]="novembre";
    Mesi[12]="dicembre";
    
    var LeftMesi=(LarghezzaLayer*7) + LeftInit + 20
    var tmpTopMesi=TopMesiInit;
    
    for (var i=1; i<13;i++){
        
        if (i==Oggi.getMonth()+1){
            Giorni+="<div class=divNorm  id=M" + i + " style='position:absolute; width:" + (LarghezzaLayer*7) + "px; " +
                    "height:" + AltezzaLayer + "px; z-index:1; left: " + LeftInit + "px; top: " + TopInit + "px;'>" + 
                    "<a href='javascript:' onclick='CambiaMese(" + i + ")'>" + Mesi[i] + "</a></div>\n";
            
            TopInit+=AltezzaLayer;
        
        }else{
            Giorni+="<div class=divNorm  id=M" + i + " style='position:absolute; width:" + LarghezzaLayerMese + "px; " +
                    "height:" + AltezzaLayer + "px; z-index:1; left: " + LeftMesi + "px; top: " + tmpTopMesi + "px;'>" + 
                    "<a href='javascript:' onclick='CambiaMese(" + i + ")'>" + Mesi[i] + "</a></div>\n";
                
            tmpTopMesi+=AltezzaLayer;    
        }
    
    }
        
    for (var i=1; i<8;i++){
        tmp=(LarghezzaLayer*(i-1)) + LeftInit;    
        Giorni+="<div class=divIntest style='position:absolute; width:" + LarghezzaLayer + "px; " +
                "height:" + AltezzaLayer + "px; z-index:1; left: " + tmp + "px; top: " + TopInit + "px;'>" + 
                GS[i] + "</div>\n";
    
    }
                
    for (var i=1; i<32;i++){
        
        Giorni+="<div class=divNorm  id=G" + i + " style='position:absolute; width:" + LarghezzaLayer + "px; " +
                "height:" + AltezzaLayer + "px; z-index:1; visibility: hidden; left: 1px; top: 1px;'>" + 
                "<a href='javascript:' onclick='SetData(" + i + ")'>" + i + "</a></div>\n";
    
    }
    
    for (var i=1; i<15;i++){
        Giorni+="<div class=divNorm id=B" + i + " style='position:absolute; width:" + LarghezzaLayer + "px; " +
                "height:" + AltezzaLayer + "px; z-index:1; visibility: hidden; left: 1px; top: 1px;'>" + 
                "&nbsp;</div>\n";
    
    
    }
    
    var scpt = "var TopInit=" + (TopInit+AltezzaLayer) + ";\n" +
               "var LeftInit=" + LeftInit + ";\n" +
               "var AltezzaLayer=" + AltezzaLayer + ";\n" +
                  "var TopMeseInit=" + TopMesiInit + ";\n" +
               "var LeftMese=" + LeftMesi + ";\n" +
               "var Fld2Fill='" + Fld2Fill + "';\n" +
                  "var LarghezzaLayerMese=" + LarghezzaLayerMese + ";\n" +           
               "var LarghezzaLayer=" + LarghezzaLayer + ";\n";
               
               
    %>
    
    <html>
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    
    <link href="../CSS/calendario.css" rel="stylesheet" type="text/css">
    </head>
    <script language="JavaScript">
    
    <%=scpt%>
    var GiorniMese=new Array();
    var Mese;
    var Anno;
    var Giorno;
    
    GiorniMese[1]=31;
    GiorniMese[2]=28;
    GiorniMese[3]=31;
    GiorniMese[4]=30;
    GiorniMese[5]=31;
    GiorniMese[6]=30;
    GiorniMese[7]=31;
    GiorniMese[8]=31;
    GiorniMese[9]=30;
    GiorniMese[10]=31;
    GiorniMese[11]=30;
    GiorniMese[12]=31;
    
    function ShowCal(mese,anno, giorno){
        
        if (!((giorno+"")=="undefined")) Giorno=new Number(giorno);
        Mese=mese;
        Anno=anno;
        
        var CurTop=TopInit;
        var CurLeft;
        var Data=new Date(anno,mese-1,1);
        var CurDay;
        
        //ricerca bisestile    
        if (mese==2){
            var d1=new Date(anno,mese-1,29);
            if (d1.getDate()==29){
                GiorniMese[2]=29;
            }else{
                GiorniMese[2]=28;
            }
        }
        
        //nascondo i layer vuoti
        for (var i=1;i<15;i++){
            document.getElementById('B' + i).style.visibility="hidden";
        }
        
        CurDay=Data.getDay()-1;
    
        if (CurDay==-1)CurDay=6;
        
        //layer vuoti all'inizio
        var cont=1;
        for (var i=0;i<CurDay;i++){
            CurLeft=i * LarghezzaLayer + LeftInit;
            document.getElementById('B' + cont).style.visibility="visible";
            document.getElementById('B' + cont).style.top=CurTop;
            document.getElementById('B' + cont).style.left=CurLeft;
            cont++;
        }
        
        CurLeft=CurDay * LarghezzaLayer + LeftInit;
        //layer con i giorni giusti
        var colore;
    
        for (var i=1;i<=GiorniMese[mese];i++){
            document.getElementById('G' + i).style.visibility="visible";
            document.getElementById('G' + i).style.top=CurTop;
            document.getElementById('G' + i).style.left=CurLeft;
            
            if (CurDay==5 || CurDay==6) colore="gray"
            else colore="white"
    
            if (i==Giorno) colore="yellow";
                
            document.getElementById('G' + i).style.backgroundColor=colore;
            
            CurDay++;
            if (CurDay==7){
                CurDay=0;
                CurTop+=AltezzaLayer;
            }
            CurLeft=CurDay * LarghezzaLayer + LeftInit;
        }
    
        //layer vuoti alla fine
        if (CurDay>0){
            for (var i=CurDay;i<7;i++){
                CurLeft=i * LarghezzaLayer + LeftInit;
                document.getElementById('B' + cont).style.visibility="visible";
                document.getElementById('B' + cont).style.top=CurTop;
                document.getElementById('B' + cont).style.left=CurLeft;
                cont++;
            }
        }
                
        //nascondo i layer degli altri giorni 
        for (var i=GiorniMese[mese]+1;i<=31;i++){
            document.getElementById('G' + i).style.visibility="hidden";
        }
    
        
    }
    
    function CambiaAnno(){
        
        var re = new RegExp('^[0-9]{4}$');
        
        if ((re.test(document.all.txtAnno.value))) {
            ShowCal(Mese,document.all.txtAnno.value);
        }
    
    
    }
    
    
    function PiuMenoAnno(val){
        var re = new RegExp('^[0-9]{4}$');
        
        if ((re.test(document.all.txtAnno.value))) {
            var tmp=new Number(Anno);
            tmp=tmp.valueOf() + val;
            document.all.txtAnno.value=tmp;
            ShowCal(Mese,tmp);
        }
    }
    
    function CambiaMese(m){
        
        
        var tmpTopMesi=TopMeseInit;
        for (var i=1;i<13;i++){
            if (i==m){
                document.getElementById('M' + i).style.top=TopInit-2*AltezzaLayer;
                document.getElementById('M' + i).style.left=LeftInit;
                document.getElementById('M' + i).style.width=LarghezzaLayer*7;
            }else{
                document.getElementById('M' + i).style.top=tmpTopMesi;
                document.getElementById('M' + i).style.left=LeftMese;
                document.getElementById('M' + i).style.width=LarghezzaLayerMese;
                tmpTopMesi+=AltezzaLayer;
            }
        }
        
        ShowCal(m,Anno);
    }
    
    function SetData(giorno){
    
        var g;
        var m;
        
        if (giorno<10) giorno ='0'+giorno;
        if (Mese<10) Mese='0' + Mese;
        var ret=giorno + "/" + Mese + "/" + Anno;
    
        window.opener.document.getElementById(Fld2Fill).value=ret;
        //window.opener.SetData(ret);
        window.close();
    }
    
    </script>
    <body onLoad="ShowCal(<%=DataIniziale %>)">
    <div align="center" id="Layer1" style="position:absolute; width: <%=LarghezzaLayer*7 %>px; height:26px; z-index:1; left: <%=LeftInit%>px; top: 35px;"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Anno</strong> 
      </font> 
      <input  onKeyUp="CambiaAnno()" onChange="CambiaAnno()" type="text" name="txtAnno" maxlength="4" size="5" value=<%=AnnoIniziale%>>
     <a href="javascript:" onClick="PiuMenoAnno(-1)" ><img src="../img/frecciecalendariogiu.GIF" alt="diminuisci anno" ></a>
      <a href="javascript:" onClick="PiuMenoAnno(1)" ><img src="../img/frecciecalendariosu.GIF" alt="aumenta anno" ></a>
    </div>
    
    <%=Giorni%> 
    </body>
    </html>
    e il richiamo

    codice:
    <script language="JavaScript">
            function ApriCalendario(fld){
                    
                var alt=280;
                var larg=375;
                var left=(screen.width - larg) / 2;
                var top=(screen.height - alt) / 2;
                        
                var str="left=" + left + ",top=" + top + ",status=no, " +
                        "menubar=no,scrollbars=no,resizable=no,width=" + larg + ",height=" + alt;
                        
                var str2="include/calendario.asp?Fld=" + fld  + "&Value=" + document.all.item(fld).value;
                window.open(str2,"", str);
            }
            
            function CheckFieldDate(fld, descrizione){
            
                var re = new RegExp('^((0[1-9])|([12][0-9])|(3[01]))[/-]((0[1-9])|(1[012]))[/-]((19)|(20))([0-9]{2})$');
    
                if (!(re.test(fld.value))){
                    alert('Campo ' + descrizione + ': formato data non corretta');
                    fld.focus();
                       return false;
        
                }else{
                    return true;
                }
            }
                            
    </script>
    Ringrazio anticipatamente tutti quelli che vorranno dare il loro suggerimento.

  2. #2
    non ci hai detto quale sarebbe il problema

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2016
    Messaggi
    13
    ero convinto di averlo scritto...

    Non è possibile effettuare una scelta. Spiego meglio: in genere il programma gestisce un database di nomi; se carico un nuovo nome o modifico uno esistente, tramite il calendario dico al programma quando ho fatto l'inserimento o la modifica. Con windows xp mi si apre il pop up con il calendario, seleziono giorno, mese e anno, il pop up si richiude e mi permette di salvare; con windows 7 si apre il pop up mi permette di scorrere le date senza però permettere la selezione e l'operazione finisce con un errore
    codice:
    formato data non corretta');

  4. #4
    perché parli di XP e W7? la procedura gira in locale?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2016
    Messaggi
    13
    ovviamente no, tutto sul web.

    Le macchine xp che accedono al portale non hanno problemi, quelle windows 7 e successivi possono solo visualzzare, ma nessuna modifica e/o inserimento.

  6. #6
    ok. comunque pare un problema di JS, non è che hai qualche blocco? e prova a chiedere nella sezione di JS

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2016
    Messaggi
    13
    Nella mia ignoranza, immaginavo...

    Blocchi no, ho provato su macchine diverse, certo è che il problema nasce a seguito di qualche aggiornamento, una macchina windows 7 installata nuova funziona, poi smette dopo qualche aggiornamento che non sono riuscito ad identificare.

    Grazie comunque

  8. #8

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2016
    Messaggi
    13
    ...up...

    nemmeno un'ideuzza?

    Mi consolo di non essere l'unico a non trovare una soluzione. Grazie lo stesso.

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.