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

Flex Discussion :

Mac DashBoard + navigateToURL


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Avril 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1
    Par défaut Mac DashBoard + navigateToURL
    Bonjour,

    J'ai développé un widget en Flash/Flex qui est deployé sur un Dashboard Mac, le widget dans son ensemble fonctionne, cependant les liens que j'ai créés avec la méthode Flex navigateToURL ne fonctionne qu'avec le paramètre window="_self". Lorsque je change ce paramètre par "_blank" le widget n'ouvre plus le lien concerné. Est-ce que qqn a déjà rencontré ce problème?

    Merci d'avance.

    extrait du code :

    var u:URLRequest = new URLRequest("http://www.google.fr");
    navigateToURL(u,"_blank");
    // KO
    navigateToURL(u,"_self"); // OK mais ouverture de la page à la place du widget alors que l'effet souhaité est l'ouverture au sein d'un navigateur

  2. #2
    Membre éclairé
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Par défaut
    Oui, même chose.

    Je crois que le widget peut changer le contenu de son div par un autre. Par contre, il ne peut pas ouvrir une autre page.

    Du coup, _self, ça fonctionne, mais _blank ne fonctionne pas.

    Si tu veux changer ton contenu, alors tu utilises _self.
    Par contre, si tu veux ouvrir un lien dans un navigateur, il existe une méthode dédiée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (window.widget) {
           widget.openURL("http://www.machin.com/");
    }
    Avec une action sur le onclick, ça devrait marcher.

  3. #3
    Membre éclairé
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Par défaut
    J'ai fait ça dans le js de Dashboard et ça marche nickel :

    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
     
    function spartooGoURL(url) {
        if (window.widget) {
            widget.openURL(url);
            return false;
        } else {
            return true;
        }
     
    }
     
    function addClickEvent(node) {
        var aNodes = new Array();
        aNodes = node.getElementsByTagName("a");
        for (var i = 0; i < aNodes.length; i++) {
            url = aNodes[i].getAttribute("href");
            aNodes[i].onclick = function() {
                return spartooGoURL(this.href);
            }
        }
    }  
     
    function sendData(div, data, page, method) {
     
        if (document.all && !window.opera) {
            var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
        } else {
            var XhrObj = new XMLHttpRequest();
        }
     
        var content = document.getElementById(div);
     
        if (method == "GET") {
            if (data == 'null'  || data=='' || data==null) {                        
                XhrObj.open("GET", page);
            } else {
                XhrObj.open("GET", page+"?"+data);
            }
        } else if (method == "POST") {
            XhrObj.open("POST", page, true);
        }
     
        XhrObj.onreadystatechange = function() {
            if (XhrObj.readyState == 4 && XhrObj.status == 200) {
     
                content.innerHTML = XhrObj.responseText ;
                addClickEvent(content);
                scrollArea.refresh();
     
            }
        }
     
        if (method == "GET") {
            XhrObj.send(null);
        } else if (method == "POST") {
            XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            XhrObj.send(data);
        }
    }
     
    sendData('content','',serverPage+'&news1=1&news2=1&news3=1' ,'GET');
    Les balises <a> sont modifiées pour insérer un événement onclick à la volée.
    Donc tout le document contenu dans InnerHTML est modifié dynamiquement avec des événement onclick. La fonction addClickEvent est très importante.
    Je l'ai écrite cet après midi après avoir été confronté au même problème que toi.

  4. #4
    Invité de passage
    Inscrit en
    Avril 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1
    Par défaut Flex / DashBoard / navigateToUrl
    Bonjour à tous,

    Je rencontre le même problème. Il est impossible d'ouvrir un lien dans une autre fenetre sous Dashboard.

    J'ai testé la fonction javascript widget.openURL (et également ExternalInterface) mais j'ai une erreur #2060 (Security sandbox violation).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ExternalInterface.call("widget.openURL", url)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <mx:Button label="Recherchez" click="javascript:widget.openURL('www.google.com')" />

    Pour que le code javascript soit executé à partir de Flex, je suis obligé d'aller dans les paramètres globaux de sécurité et d'ajouter le répertoire d'installation du widget dans la liste des répertoires de confiance (http://www.macromedia.com/support/do...manager04.html).
    L'ajout du répetoire dans la liste permet de passer le widget du mode LocalWithNetwork en mode LocalTrusted. Dans ce dernier cas, j'ai bien l'ouverture de safari en mode _blank.

    Le problème, c'est que cela complique l'installation du widget.

    Avez-vous le même problème ? Avez-vous une solution ?

Discussions similaires

  1. Eclipse Mac version et pluginUML
    Par Driden dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 09/06/2003, 19h03
  2. Réponses: 5
    Dernier message: 25/03/2003, 17h27
  3. [Turbo Pascal] [MS-DOS] Lire la Mac-address de la carte réseau
    Par toctoc dans le forum Turbo Pascal
    Réponses: 14
    Dernier message: 21/02/2003, 22h08
  4. Comment récupérer une adresse MAC ?
    Par psau dans le forum Développement
    Réponses: 7
    Dernier message: 19/07/2002, 17h26

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