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

Web & réseau Delphi Discussion :

[D10.2] Problème de fonction dans un script Java


Sujet :

Web & réseau Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Par défaut [D10.2] Problème de fonction dans un script Java
    Bonjour,
    Dans mon application, J'ai un script contenu dans une page HTML sous forme de String.
    Ce script comprend une fonction ShowMap avec 4 paramètres string.
    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
      strHTML: String =
      '<!DOCTYPE html>' +
      '<html>' +
      '<head>' +
      '<meta charset="utf-8" />' +
      '<title>Esri Leaflet Quickstart</title>' +
      ' <meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,user-scalable=no" />' +
      '<!-- Load Leaflet from PC -->' +
      '<link rel="stylesheet" href="D:/Developement/CPS-NG/Win64/Debug/Leaflet/leaflet.css"' +
        'integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A=="' +
        'crossorigin=""/>' +
      '<script src="D:/Developement/CPS-NG/Win64/Debug/Leaflet/leaflet.js"' +
        'integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA=="' +
        'crossorigin=""></script>' +
      '<style>' +
        'body { margin:0; padding:0; }' +
        '#map { position: absolute; top:0; bottom:0; right:0; left:0; }'+
      '</style>' +
      '</head>' +
     '<body>' +
     '<div id="map"></div>' +
     '<script>' +
        'function ShowMap(MaxLat, MaxLon, MinLat, MinLon)' +
        '{' +
        'var map = L.map("map").fitBounds(' +
        '[MaxLat, MaxLon],' +
        '[MinLat, MinLon]' +
    	  ');' +
        'L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png","' +
         '{"' +
        'attribution: "&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> CPS-NG"' +
        '}).addTo(map);' +
        '}' +
     '</script>' +
     '</body>' +
     '</html>';
    la fonction de ce script est appelée par une procedure (PlotMap)
    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
    procedure TfrmFlightMap.plotMap;
    var
      MaxLat,
      MaxLon,
      MinLat,
      MinLon :String;
    begin
      MaxLat:= '51';
      MaxLon:= '5';
      MinLat:= '48';
      MinLon:= '-75';
     
      HTMLWindow2.execScript(Format('ShowMap(%s,%s,%s,%s)',[MaxLat, MaxLon,
                                                            MinLat, MinLon]),
                                                            'JavaScript')  ;
    end;
    HTMLWindow2 est défini ici:
    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
    procedure TfrmFlightMap.FormCreate(Sender: TObject);
    var
      aStream : TMemoryStream;
    begin
      wbbMap.Navigate('about:blank');
     
     if Assigned(wbbMap.Document) then
      begin
        aStream :=  TMemoryStream.Create;
        try
          aStream.WriteBuffer(Pointer(strHTML)^, Length(strHTML));
            aStream.Seek(0, soFromBeginning);
            (wbbMap.Document as IPersistStreamInit).Load(TStreamAdapter.
                                                              Create(aStream));
        finally
          aStream.Free;
        end;
        HTMLWindow2:= (wbbMap.Document as iHTMLDocument2).parentWindow;
        wbbMap.Visible:= true;
      end;
    end;
    Lorsque je lance PlotMap, J'obtiens une erreur de script: ShowMap est indéfini.

    Pourriez vous m'aider à comprendre où se situe mon ou mes erreurs?

    Merci
    Cordialement
    Pierre

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 027
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 027
    Par défaut
    En dehors que execScript ne devrait pas utilisé, c'est plutôt 'JScript' que 'JavaScript' selon la Doc

    Force dans le code '<script type="text/javascript"> ' pour que cela soit en phase

    Faudrait vérifier que les options IE11 autorise l'exécution du Script dans le WebBrowser, il faut regarder aussi le niveau d'émulation dans 'Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION'.
    Voir si d'ailleurs ça passe par Edge

    Et pouvoir lancer un script depuis l'hote du WebBrowser, j'ai lu que c'était possible, cependant, il faut vérifier que tous les objets OLE soient chargés, un DOM complet, c'est certains via Navigate2 ... mais via une écriture via IPersistStreamInit, j'ai déjà plus de doute que je JS soit chargé, mais mes souvenirs c'est en D7 avec IE5 et plein de problème de compatibilité entre IE4, IE5 et IE6 où le JS ne fonctionnait jamais, une MsgBox d'erreur

    Le WebBrowser affiche la page ?
    Il faut que le WebBrowser soit visible sinon aucun DOM n'est produit.

    D'ailleurs, votre réponse "Certains fichier sont corrompus semble-t-il..." sur un autre sujet Leaflet indique que vous connaissez déjà le sujet depuis un certain temps, même avec Google MAP depuis 2016 ... pas de bol, je tombe que sur vos sujets, dire que cela n'a pas été fréquent comme utilisation en Delphi.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    Bonjour

    [ModeRonchon On]Mais bordel, quand les gens qui font du JavaScript arrêteront-ils d'écrire "Java" à la place ? Ca n'a rien à voir ![ModeRonchon Off]

    Si c'est du Delphi 10.2 le TWebBrowser embarqué ne prend en charge que l'API de IE. Ce programme ne devrait pas pouvoir fonctionner sur des versions récentes de Windows 10 (qui sont censées avoir viré IE au profit de Edge) et windows 11 (qui n'a rien d'autre que Edge).

    Si c'est juste pour afficher la carte, pourquoi ne pas passer par l'API de OSM plutôt que par un navigateur ? C'est une autre approche mais au moins c'est durable.

    Il y a des solutions commerciales chez DevExpress et TMS Software, mais aussi open source avec notamment ce projet VCL / LCL : https://github.com/Fr0sT-Brutal/Delphi_OSMMap

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 576
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    si je reprends la discussion ancienne https://www.developpez.net/forums/d2...me-webbrowser/
    il faudrait déjà savoir s'il s'agit de FMX ou VCL (certainement le dernier)

    Mais comme c'est résolu, sans que l'on sache quelle est la solution , je ne vais pas aller plus loin

  5. #5
    Membre très actif

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2013
    Messages : 411
    Billets dans le blog
    2
    Par défaut Delphi_OSMMap ne compile pas sous Lazarus
    Citation Envoyé par pprem Voir le message
    Il y a des solutions commerciales chez DevExpress et TMS Software, mais aussi open source avec notamment ce projet VCL / LCL : https://github.com/Fr0sT-Brutal/Delphi_OSMMap
    Qui ne compile pas du tout sous Lazarus

  6. #6
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    Citation Envoyé par JP CASSOU Voir le message
    Qui ne compile pas du tout sous Lazarus
    oui, ok, mais on parle d'une question sur Delphi là, ou j'ai loupé un truc ?

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 576
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par pprem Voir le message
    on parle d'une question sur Delphi là, ou j'ai loupé un truc ?
    Rien loupé, c'est bien indiqué dans le titre Delphi 10.2

    @JPCassou s'il s'agit du dépôt Git, autant le signaler à l'auteur

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

Discussions similaires

  1. Problème d'accent dans le script java
    Par anaice dans le forum Pentaho
    Réponses: 1
    Dernier message: 06/11/2009, 15h12
  2. [JS] Appeler une fonction dans un script externe
    Par agent007se dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/03/2007, 12h30
  3. Réponses: 10
    Dernier message: 07/01/2007, 12h03
  4. Réponses: 8
    Dernier message: 30/08/2006, 10h08
  5. [MySQL] Problème de pagination dans un script.
    Par Scurz dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 13/08/2006, 12h47

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