IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

HTA et VBScript : liens html deviennent inutilisables


Sujet :

VBScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut HTA et VBScript : liens html deviennent inutilisables
    Bonjour tout le monde !

    j'ai un bug dans une appli HTA utilisant VBScript et une BDD access 2007.

    En effet les liens html deviennent inutilisables, ils dysfonctionnent de manière aléatoire, le lundi tout marche, le mardi les liens sont en carafe. J'ai beau cliquer, la page ( donc le lien ) ne réagis pas.

    Mis à part ce bug de lien , l'appli fonctionne bien.

    Merci d'avance aux membres qui se pencheront sur ce problème, je suis preneur de toutes idées, suggestions, retours sur expérience.

    voici le code concerné, je m'excuse d'avance si le code n'est pas optimal, mais j'ai encore à apprendre sur le coding

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    <html>
    <head>
     
    	<meta charset="UTF-8">
    	<title>La compagnie : Liste des Compétences par Ordre Alphabétique</title>
    	<meta http-equiv="x-ua-compatible" content="IE=9">
    	<link rel="stylesheet" type="text/css" href="style.css">
     
    </head>
    <body>
    <div>
    <a href="index.hta">Menu principal</a><hr>
    <h1>Liste des compétences par Ordre Alphabétique:</h1>
     
    	<div id="alphabet">
     
    		<SCRIPT language="VBScript">
     
    			public strChemin, strCheminCompetence
     
    		Sub getChemin
     
    			dim rea ,fso
     
    			Set fso = CreateObject("Scripting.FileSystemObject")
    			Set rea = fso.OpenTextFile("cheminBdd.txt",1)
     
    		    strChemin=rea.readAll
     
    		    set rea = fso.OpenTextFile("cheminCompetence.txt")
     
    		    strCheminCompetence=rea.readAll
     
    		    rea.close
     
    		    set fso = nothing
     
    		End Sub
     
    				dim strRequete, majuscule, lettre, objConn, rs, connStr, strCheminFicheCompetence
     
    				getChemin
     
    				connStr = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & strChemin
     
    				Set objConn = CreateObject("ADODB.Connection")
     
    				objConn.open connStr
     
    				strRequete = "select libelle,IDcompetence from COMPETENCE order by libelle asc"
     
    				Set rs = objConn.execute(strRequete)
     
    				if rs.eof = false then
     
    				rs.movefirst
     
    				lettre = UCase(Left(unescape(rs(0)),1))
     
    				document.write "<a href=""" & "#" & lettre & """>" & lettre & "</a>"
     
    				While Not(rs.EOF)
     
    					majuscule = UCase(Left(unescape(rs(0)),1))
     
    					if lettre <> majuscule then
     
    						document.write "<a href=""" & "#" & majuscule & """>" & majuscule & "</a>"
    						lettre = majuscule
     
    					else 
     
    						rs.movenext
     
    					end if
     
    					if not(rs.EOF) then
     
    					document.write " "
     
    					end if
     
     
     
    				wend
     
     
    		document.write "</div><hr>"
     
    		document.write "<div id=""liste"">"
     
     
    				rs.movefirst
     
    				lettre = UCase(Left(unescape(rs(0)),1))
     
    				document.write "<div class=""groupe"" id=""" & "#" & UCase(Left(unescape(rs(0)),1)) & """>" & Ucase(lettre) & "</div>"
     
    				While Not(rs.EOF)
     
    					majuscule = UCase(Left(unescape(rs(0)),1))
     
    					if lettre <> majuscule then
     
    						document.write "<div class=""groupe"" id=""" & majuscule & """>" & majuscule & "</div>" 
     
    						lettre = majuscule
     
    					end if
     
     
    					strCheminFicheCompetence = strCheminCompetence & "\competence_" & rs(1) & ".html"
     
    					document.write "<div class=""detail""><a href=""" & strCheminFicheCompetence & """ target=""_blank"">" & unescape(rs(0)) & "</a></div>"
     
    					rs.movenext
     
    				wend
     
    		document.write "</div>"
     
    				else
     
    					msgbox "Aucune compétence enregistrée"
     
    				end if
     
    				rs.close
     
    				set rs = nothing
     
    				objConn.close
     
    				set objConn = nothing
     
     
    				</SCRIPT>
    </div>
    </body>
    </html>
    cordialement

    edit : j'ai utilisé la balise meta xua pour que les CSS soient pris en compte, c'est une balise que j'ai un peu utilisé au hasard ( solution glanée sur un forum )

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    J'ai regardé le script et il y a quoi inquiétant. Règle numéro 1 est qu'on ne doit pas utilser librement document.write comme ça et sur le temps de chargement réel (je m'exprime probablement mal). C'est à quoi j'en prends w3schools aussi qui persiste à le montrer par les exemples avec. Et aussi par une écriture comme ça, il n'est pas surprenant qu'on observe les comportements aléatoires ... On doit prendre plein contrôle quant à la séquence de chargement des éléments HTML sur la page et c'est pour ça je préfère que la fonctionalité vbs soit appelée d'une façon ordonnée. Et puis, il vaut beaucoup mieux que les éléments HTML créées et contrôlées par vbs s'accomplient et s'insertent dans la page via la fonctionalité DOM la plus possible et ne pas via que ne sais quelles chaînes de texte html ...

    Voici une réecriture à grande échelle de votre script qui reflète ce que j'intends de communiquer. Vous devrez les découvrir vous-même par comparison au vôtre. Il me prendrait trop de temps pour les expliciter ligne par ligne.
    Code vbscript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    <html>
    <head>
     
    <meta charset="UTF-8">
    <title>La compagnie : Liste des Compétences par Ordre Alphabétique</title>
    <meta http-equiv="x-ua-compatible" content="IE=9">
    <link rel="stylesheet" type="text/css" href="style.css">
     
    <script language="vbscript" type="text/vbscript">
     
    public strChemin, strCheminCompetence
     
    Sub getChemin
        dim rea ,fso
        Set fso = CreateObject("Scripting.FileSystemObject")
     
        Set rea = fso.OpenTextFile("cheminBdd.txt",1)
        strChemin=rea.readAll
        rea.close
     
        set rea = fso.OpenTextFile("cheminCompetence.txt",1)
        strCheminCompetence=rea.readAll
        rea.close
     
        set rea=nothing
        set fso = nothing
    End Sub
     
    sub init
        dim strRequete, majuscule, lettre, objConn, rs, connStr, strCheminFicheCompetence
     
        getChemin
     
        connStr = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & strChemin
        Set objConn = CreateObject("ADODB.Connection")
        objConn.open connStr
        strRequete = "select libelle,IDcompetence from COMPETENCE order by libelle asc"
        Set rs = objConn.execute(strRequete)
        if not rs.eof then
            rs.movefirst
            lettre = UCase(Left(unescape(rs(0)),1))
     
            'document.write "<a href=""" & "#" & lettre & """>" & lettre & "</a>"
     
            set oid=document.getElementById("alphabet")
     
            set olink=document.createElement("a")
            olink.setAttribute "href", "#" & lettre
            olink.appendChild document.createTextNode(lettre)
            oid.appendChild olink
            set olink=nothing
     
            While Not rs.EOF
                majuscule = UCase(Left(unescape(rs(0)),1))
                if lettre <> majuscule then
     
                    'document.write "<a href=""" & "#" & majuscule & """>" & majuscule & "</a>"
     
                    set olink=document.createElement("a")
                    olink.setAttribute "href", "#" & majuscule
                    olink.appendChild document.createTextNode(majuscule)
                    oid.appendChild olink
                    set olink=nothing
     
                    lettre = majuscule
                else 
                    rs.movenext
                end if
                'if not rs.EOF then
                    'document.write " "    'pourquoi faire, ce n'est pas nécessaire
                'end if
             wend
     
            'document.write "</div><hr>"    'couper court div et recréer l'autre div comme ça n'est pas la bonne façon de le faire
            'document.write "<div id=""liste"">"
     
            set ohr=document.createElement("hr")
            oid.insertAdjacentElement "afterEnd", ohr
            set oid=nothing
     
            set odivliste=document.createElement("div")
            odivliste.setAttribute "id", "liste"
            ohr.insertAdjacentElement "afterEnd", odivliste
            set ohr=nothing
     
            rs.movefirst
            lettre = UCase(Left(unescape(rs(0)),1))
     
            'document.write "<div class=""groupe"" id=""" & "#" & UCase(Left(unescape(rs(0)),1)) & """>" & Ucase(lettre) & "</div>"
     
            set odiv=document.createElement("div")
            odiv.setAttribute "class", "groupe"
            odiv.setAttribute "id", "#" & UCase(Left(unescape(rs(0)),1)) 
            odiv.appendChild document.createTextNode(Ucase(lettre))
            odivliste.appendChild odiv
            set odiv=nothing
     
            While Not rs.EOF
                majuscule = UCase(Left(unescape(rs(0)),1))
     
                if lettre <> majuscule then
     
                    'document.write "<div class=""groupe"" id=""" & majuscule & """>" & majuscule & "</div>" 
     
                    set odiv=document.createElement("div")
                    odiv.setAttribute "class", "groupe"
                    odiv.setAttribute "id", majuscule
                    odiv.appendChild document.createTextNode(majuscule)
                    odivlist.appendChild odiv
                    set odiv=nothing
     
                    lettre = majuscule
                end if
     
                strCheminFicheCompetence = strCheminCompetence & "\competence_" & rs(1) & ".html"
     
                'document.write "<div class=""detail""><a href=""" & strCheminFicheCompetence & """ target=""_blank"">" & unescape(rs(0)) & "</a></div>"
     
                set odiv=document.createElement("div")
                odiv.setAttribute "class", "detail"
                set olink=document.createElement("a")
                olink.setAttribute "href", strCheminFicheCompetence
                olink.setAttribute "target", "_blank"
                olink.appendChild document.createTextNode(unescape(rs(0)))
                odiv.appendChild olink
                odivliste.appendChild odiv
                set olink=nothing
                set odiv=nothing
     
                rs.movenext
            wend
     
            'document.write "</div>"    'ceci fait un </div> délinquant, l'originale </div> en bas de la page !
        else
            msgbox "Aucune compétence enregistrée"
        end if
     
        set odivlist=nothing
     
        rs.close
        set rs = nothing
        objConn.close
        set objConn = nothing
     
    end sub
    </script>
     
    </head>
    <body onload="init">
    <div>
    <a href="index.hta">Menu principal</a><hr>
    <h1>Liste des compétences par Ordre Alphabétique:</h1>
     
    <div id="alphabet">
    </div>
     
    </body>
    </html>

    Voilà !

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Merci tsuji !
    merci tsuji pour ton aide,

    j'ai bien compris le problème, le minimum de document.write, et plus de DOM.
    Level-up !

    je laisse ouverte la discussion, le temps de reprendre le code, de m'assurer que tout est ok.

    encore Merci !

    edit : je mets la discussion en "résolu"! génial tsuji!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lien Html Perl
    Par nevenjm dans le forum Langage
    Réponses: 2
    Dernier message: 28/08/2005, 18h02
  2. Réponses: 2
    Dernier message: 14/03/2005, 19h55
  3. liens html
    Par gregal dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 08/11/2004, 09h53
  4. [web] lien HTML à partir de perl
    Par lilou0210 dans le forum Web
    Réponses: 4
    Dernier message: 05/11/2004, 00h16
  5. équivalent lien HTML
    Par Dra_Gun dans le forum Flash
    Réponses: 3
    Dernier message: 15/12/2003, 16h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo