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

AWT/Swing Java Discussion :

Impossible de charger une feuille de style avec Cobra


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 19
    Points
    19
    Par défaut Impossible de charger une feuille de style avec Cobra
    Bonjour,

    J'utilise Cobra pour parser un flux HTML et ensuite afficher les résultats dans le HTMLPanel en appliquant une feuille de style.

    Ci-dessous extrait du code qui crée un document DOM qui va me servir à générer mon code HTML à afficher.
    Si je définis le style directement dans le fichier HTML, pas de problème.

    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
     
            Document dores = builder.newDocument();
            Element racine = dores.createElement("html");
     
            Element head = dores.createElement("head");
            Element body = dores.createElement("body");
            Element style = dores.createElement("style");
            style.setAttribute("type", "text/css");
            Text styleDefined = dores.createTextNode("td {background-color:#339; color:#fff;}");
            style.appendChild(styleDefined);
            head.appendChild(style);
            racine.appendChild(head);
    // ... suite de la création du code HTML de sortie
            racine.appendChild(body);
            dores.appendChild(racine);
            DOMSerializer serializer = new DOMSerializer();
            StringWriter out = new StringWriter();
            serializer.serialize(dores, out);
            String res = out.toString();
            panel.setHtml(res, "", rcontext);
    // C'est ok, le style est appliqué
    En revanche, si j'essaie de faire référence à une feuille de style externe (style.css), le style n'est pas appliqué.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            Element racine = dores.createElement("html");
            Element head = dores.createElement("head");
            Element body = dores.createElement("body");
            Element link = dores.createElement("link");
            link.setAttribute("href", "/style.css");
            link.setAttribute("media", "all");
            link.setAttribute("rel", "stylesheet");
            link.setAttribute("type", "text/css");
            head.appendChild(link);
    // reste du code identique...
    Mon fichier style.css est placé dans le même répertoire que ma classe.

    Où est l'erreur dans mon code ?

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 19
    Points
    19
    Par défaut
    Help
    Je suis vraiment bloqué sur ce problème

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 19
    Points
    19
    Par défaut
    Plus j'y réfléchis, et plus je me ds que la solution passerait par un parsing de la feuille de style afin de récupérer les styles dans les CSSRules...

    Mais, là où ça coince pour moi, c'est que je ne vois pas quoi faire de ces CSSRules ensuite.

    Comment appliquer les CSSRules au Document DOM ? Comment générer ensuite le code HTML correspondant ?
    N'est ce pas là une solution bien compliquée alors que le style défini directement dans le fichier HTML représente une solution bien plus simple à mettre en oeuvre ?

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    je suis pas expert là dedans, mais est-ce que tu précise à un seul moment à cobra quelle est l'url de ton document principal? Sans ça, il sera incapable de résoudre "/style.css" puisqu'il ne saura pas par rapport à quoi résoudre cette référence....

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    je suis pas expert là dedans, mais est-ce que tu précise à un seul moment à cobra quelle est l'url de ton document principal? Sans ça, il sera incapable de résoudre "/style.css" puisqu'il ne saura pas par rapport à quoi résoudre cette référence....
    Je comprends bien, mais comment "affecter" une URL à mon document, sachant qu'il est produit "ex nihilo": je le crée à vide et ajoute ensuite un par un les éléments ?

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    le problème, dans ce dernier cas, c'est que à partir de "rien" /style.css ca ne veux rien dire non plus...; Il arrive à charger des images ton document???

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    le problème, dans ce dernier cas, c'est que à partir de "rien" /style.css ca ne veux rien dire non plus...; Il arrive à charger des images ton document???
    Oui, il affiche mon tableau de données mais sans style...

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 19
    Points
    19
    Par défaut
    A ce stade de la discussion, je pense que le mieux est de donner le code que j'ai écrit.

    C'est du code "quick and dirty", donc je sais que ce que je fais au niveau de l'IHM notamment n'est pas tip-top (EDT,...), mais mon but est de tester le fonctionnement de cobra.

    Je récupère donc un flux HTML que je parse pour créer un document (dores) que je souhaite afficher dans le HTMLPanel fourni par Lobobrowser via setHTML.
    Quand j'essaie de définir le style directement dans le document, pas de problème. En revanche, si je définis ce style dans un fichier externe "style.css", Cobra ne le trouve pas. Je suis d'accord avec tchize_ que si je ne définis pas l'URI du document cible, Cobra n'arrivera pas à faire le lien avec le fichier style.css, MAIS comment puis-je le faire quand dores est créé "en mémoire" ?
    Merci de votre aide.

    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
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
     
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.Reader;
    import java.io.StringWriter;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.xpath.XPath;
    import javax.xml.xpath.XPathConstants;
    import javax.xml.xpath.XPathExpressionException;
    import javax.xml.xpath.XPathFactory;
    import org.lobobrowser.html.domimpl.ElementImpl;
    import org.lobobrowser.html.domimpl.HTMLElementImpl;
    import org.lobobrowser.html.gui.HtmlPanel;
    import org.lobobrowser.html.parser.DocumentBuilderImpl;
    import org.lobobrowser.html.parser.HtmlParser;
    import org.lobobrowser.html.parser.InputSourceImpl;
    import org.lobobrowser.html.style.AbstractCSS2Properties;
    import org.lobobrowser.html.test.SimpleHtmlRendererContext;
    import org.lobobrowser.html.test.SimpleUserAgentContext;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.NodeList;
    import org.w3c.dom.Text;
    import org.w3c.dom.html2.HTMLDocument;
    import org.xml.sax.InputSource;
    import org.xml.sax.SAXException;
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    /*
     * TestParseIHM.java
     *
     * Created on 17 mai 2010, 13:25:49
     */
     
    /**
     *
     * @author leef6251
     */
    public class TestParseIHM extends javax.swing.JFrame {
     
        /** Creates new form TestParseIHM */
        public TestParseIHM() {
            initComponents();
        }
     
        private void initComponents() {
     
            jButton1 = new javax.swing.JButton();
            jScrollPane2 = new javax.swing.JScrollPane();
            jEditorPane2 = new javax.swing.JEditorPane();
            jScrollPane1 = new javax.swing.JScrollPane();
            jEditorPane1 = new javax.swing.JEditorPane();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.LINE_AXIS));
     
            jButton1.setText("jButton1");
            jButton1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButton1ActionPerformed(evt);
                }
            });
            getContentPane().add(jButton1);
     
            panel = new HtmlPanel();
            panel.setPreferredWidth(800);
            this.getContentPane().add(panel);
            uacontext = new SimpleUserAgentContext();
            uacontext.setExternalCSSEnabled(true);
            rcontext = new SimpleHtmlRendererContext(panel, uacontext);
            panel.setHtml("", TEST_URI, rcontext);
            pack();
        }
     
        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
            try {
                startTime = System.currentTimeMillis();
                //GEN-FIRST:event_jButton1ActionPerformed
                //GEN-FIRST:event_jButton1ActionPerformed
     
                uacontext.setExternalCSSEnabled(true);
     
                uacontext.setScriptingEnabled(false);
                builder = new DocumentBuilderImpl(uacontext);
                Reader reader = getReader(TEST_URI);
                InputSource is = new InputSourceImpl(reader, "http://www.holdemresources.net");
                Document document = builder.parse(is);
                DOMSerializer serializerin = new DOMSerializer();
                StringWriter in = new StringWriter();
                serializerin.serialize(document, in);
                String inp = in.toString();
     
                testXPath2(document);
            }
            catch (IOException ex) {
                Logger.getLogger(TestParseIHM.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SAXException ex) {
                Logger.getLogger(TestParseIHM.class.getName()).log(Level.SEVERE, null, ex);
            }
     
        }
     
        public void testXPath2(Document document) {
            System.out.println("XPATH2");
            try {
            /* On initialise un nouvel élément avec l'élément racine du
            document. */
            Text text = null;
            String req = null;
            String req2 = null;
            int u = 0;
            dores = builder.newDocument();
            Element racine = dores.createElement("html");
     
            Element head = dores.createElement("head");
            Element body = dores.createElement("body");
            Element link = dores.createElement("link");
            link.setAttribute("href", "style.css");
            link.setAttribute("media", "all");
            link.setAttribute("rel", "stylesheet");
            link.setAttribute("type", "text/css");
            head.appendChild(link);
    /* Quand je définis le style ainsi directement dans le document cible - dores, Cobra affiche correctement le style.
            Element style = dores.createElement("style");
            style.setAttribute("type", "text/css");
            String desc = "table{border-collapse:collapse;}table, th, td{border: 1px solid black;}td{padding:15px;}td{text-align:left;}";
            Text styleDefined = dores.createTextNode(desc);
            style.appendChild(styleDefined);
            head.appendChild(style);
    */
            racine.appendChild(head);
     
            XPath xpa = XPathFactory.newInstance().newXPath();
            /* Recherche de la liste des tables */
            NodeList nodeList = (NodeList) xpa.evaluate("//table[@class='simple']", document, XPathConstants.NODESET);
            int length = nodeList.getLength();
            /* On récupère tous les noeuds répondant au chemin //table */
            Element noeudCourant = null;
            for (int i = 0; i < length; i++) {
                System.out.println("i: " + i);
                noeudCourant = (Element) nodeList.item(i);
                System.out.println("element " + i + ": " + noeudCourant.getNodeName() + " " + noeudCourant.getFirstChild().getNodeValue());
                Element table = dores.createElement(noeudCourant.getNodeName());
     
     
                req = "./tr";
                NodeList nodeListRow = (NodeList) xpa.evaluate(req, noeudCourant, XPathConstants.NODESET);
                int lengthRow = nodeListRow.getLength();
                for (int j = 1; j < lengthRow; j++) {
                    System.out.println("j: " + j);
                    noeudCourant = (Element) nodeListRow.item(j);
                    System.out.println("element " + j + ": " + noeudCourant.getNodeName() + " " + noeudCourant.getFirstChild().getNodeValue());
                    Element ligne = dores.createElement(noeudCourant.getNodeName());
                    req2 = "./td";
                    NodeList nodeListCell = (NodeList) xpa.evaluate(req2, noeudCourant, XPathConstants.NODESET);
                    int lengthCell = nodeListCell.getLength();
                    for (int k = 0; k < lengthCell; k++) {
                        System.out.println("k: " + k);
                        noeudCourant = (Element) nodeListCell.item(k);
                        HTMLElementImpl htmle = (HTMLElementImpl) noeudCourant;
                        AbstractCSS2Properties abs = htmle.getCurrentStyle();
                        String col = abs.getBackgroundColor();
                        String col2 = abs.getDisplay();
                        Element cellule = dores.createElement(noeudCourant.getNodeName());
                        if (!(noeudCourant.hasChildNodes())) {
                            text = dores.createTextNode("");
                        } else {
                            text = dores.createTextNode(noeudCourant.getFirstChild().getTextContent());
                        }
                        System.out.println("text: " + text.getNodeValue());
                        cellule.appendChild(text);
                        ligne.appendChild(cellule);
                    }
                    table.appendChild(ligne);
                }
                body.appendChild(table);
            }
            racine.appendChild(body);
            dores.appendChild(racine);
     
            DOMSerializer serializer = new DOMSerializer();
            StringWriter out = new StringWriter();
            serializer.serialize(dores, out);
            String res = out.toString();
            panel.setHtml(res, "http://www.holdemresources.net", rcontext);
     
     
            pack();
            endTime = System.currentTimeMillis();
            System.out.println("durée: " + (endTime - startTime));
            } catch (IOException ex) {
                Logger.getLogger(TestParseIHM.class.getName()).log(Level.SEVERE, null, ex);
            } catch (XPathExpressionException ex) {
                Logger.getLogger(ParseImagesTest.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
     
        /**
        * @param args the command line arguments
        */
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new TestParseIHM().setVisible(true);
                }
            });
        }
     
        public Reader getReader(String url) {
                Reader reader = null;
                if (url.startsWith("http://")) {
                URL u = null;
                InputStream in = null;
                try {
                    u = new URL(url);
                    in = u.openConnection().getInputStream();
                    reader = new InputStreamReader(in, "ISO-8859-1");
                }  catch (MalformedURLException ex) {
                    Logger.getLogger(ParseImagesTest.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(TestParseIHM.class.getName()).log(Level.SEVERE, null, ex);
                }
            } else {
                try {
                    reader = new FileReader(url);
                } catch(FileNotFoundException fnfe) {
                    Logger.getLogger(ParseImagesTest.class.getName()).log(Level.SEVERE, null, fnfe);
                }
            }
            return reader;
        }
     
        // Variables declaration - do not modify//GEN-BEGIN:variables
        private javax.swing.JButton jButton1;
        private javax.swing.JEditorPane jEditorPane1;
        private javax.swing.JEditorPane jEditorPane2;
        private javax.swing.JScrollPane jScrollPane1;
        private javax.swing.JScrollPane jScrollPane2;
        private HtmlPanel panel;
        // End of variables declaration//GEN-END:variables
        private static final String TEST_URI = "http://www.holdemresources.net/hr/sngs/icmcalculator.html?action=calculate&bb=200&sb=100&ante=0&structure=0.5%2C0.3%2C0.2&s1=1500&s2=1400&s3=1600&s4=2000&s5=1000&s6=3800&s7=2200&s8=&s9=";
     
        DocumentBuilderImpl builder = null;
        org.w3c.dom.Document dores = null;
        private SimpleUserAgentContext uacontext;
        private SimpleHtmlRendererContext rcontext;
        long startTime = 0;
        long endTime = 0;
    }

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    déjà on est passé de '/style.css' à style.css

    en pratique, simple suggestion, commence par remplacer 'style.css' par l'url complète du fichier. Si le fichier est dans tes ressources java à la racine du classpath, par exemple, utiliser


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getClass().getResource("/style.css").toString
    pour avoir une url en jar://

    On va déjà tester si ça fonctionne

    Pour préciser la localisation du document, il existe la balise base dans le head:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <base url="jar://........some.jar!/some/location/of/resource"/>

    edit: tu a aussi cet emplacement où, normalement, tu "dois" préciser la base du document:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    panel.setHtml(res, "", rcontext);
    tu aurais du avoir quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    panel.setHtml(res, "http://mon/server/page", rcontext); //ou
    panel.setHtml(res, "file://chemin/vers/document", rcontext); // ou
    panel.setHtml(res, "jar://chemin/vers/ressource/classpath", rcontext);
    //etc
    sans ça, impossible pour cobra de savoir ou charger les ressources référencées dans le document (css, javascript, images, ....)

  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 19
    Points
    19
    Par défaut
    Je vais essayer ta suggestion de la balise <base url=...> dans le code HTML produit, mais j'identifie tout de même une difficulté dans le sens où mon document en sortie n'est pas sérialisé sur disque, et encore moins dans un jar puisque je suis en phase de test...

    Quant à ta remarque: "tu a aussi cet emplacement où, normalement, tu "dois" préciser la base du document:

    Code :
    panel.setHtml(res, "", rcontext);"
    je suis d'accord que c'st là qu'est le noeud du pb, mais qu'est ce que je mets à la place de "" ?

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    alors on s'en fou que le document soit en mémoire. Ce qui importe c'est que Cobra sache à partir de quoi il doit résoudre ton style.css. Il est où ce style.css? Contrairement au document, lui il doit bien exister quelque part. L'url que tu passe en paramètre ne sert qu'à résoudre les ressources relative, on s'en fiche que le document lui n'existe pas, cobra n'essaiera de toutes façons pas de le lire.

  12. #12
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 19
    Points
    19
    Par défaut
    Je commençais à gentiment pêter un cable car j'avais systématiquement une java.net.UnknownHostException en mettant une URL du style file://C:/Chemain/vers/style.css
    Et puis, j'ai eu l'idée d'essayer avec file:/C:/hemain/vers/style.css et là ça passe !

    Merci pour l'aide

  13. #13
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 19
    Points
    19
    Par défaut
    Ceci étant dit, je ne compreends pas pourquoi il fallait mettre "file:/" au lieu de "file://" qui est la syntaxe normale...

  14. #14
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par lvfco Voir le message
    Ceci étant dit, je ne compreends pas pourquoi il fallait mettre "file:/" au lieu de "file://" qui est la syntaxe normale...
    la syntaxe normale pour une url est

    scheme:[//Internet protocol parts]/path

    le internet protocol parts regroupant serveur, port, authentification

    on est bien correct avec file:/path

    maintenant il est vrai que des browser utilisent souvent (par erreur?) "file:///"


    Note que le mieux dans ton cas et de prendre un objet File qui pointe sur ta ressource et appeler sa méthode toURI

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

Discussions similaires

  1. Comment puis ajouter une feuille de style avec Javascript
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/02/2010, 08h21
  2. charger une feuille de style via javascript
    Par yakusa77 dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 05/12/2008, 11h15
  3. Réponses: 1
    Dernier message: 03/06/2008, 14h27
  4. Compatibilité d'une feuille de style avec IE6 et IE7
    Par matimat2k4 dans le forum Mise en page CSS
    Réponses: 10
    Dernier message: 18/05/2008, 23h28
  5. Réponses: 1
    Dernier message: 28/04/2006, 13h57

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