2011-07-06 3 views
0

En essayant de créer une fenêtre contextuelle du navigateur avec du texte, plutôt que d'utiliser les popups Alert.show() ou Flash Player.Flex: popup du navigateur plutôt que Alert.show() type popup?

J'ai regardé autour de moi, et essayé quelques trucs avec URI Data Scheme, mais je pensais que l'un d'entre vous aurait déjà fait quelque chose de similaire.

MISE À JOUR: Moi-même Questions traitées ci-dessous

+1

-t-il d'être 'déterminée' dans swf? Mon approche serait d'avoir tout le code fait en html/javascript et avoir Flex appeler une fonction javascript en utilisant ExternalInterface pour ouvrir votre fenêtre. –

+0

@J_A_X - oui, il faut le spécifier dans le swf - c'est tout ce qui était en train d'être édité à ce stade - mettre à jour le JS n'est pas vraiment une option. De ce que j'ai fait si loin, je suis assez sûr que c'est faisable - pas vraiment JS savvy – Ryan

Répondre

0

Le code suivant fait le tour:

<fx:Script> 
    <![CDATA[ 
     import flash.net.navigateToURL; 

     private function urlJump():void{ 

      var url:URLRequest = new URLRequest("javascript:NewWindow=window.open(''," + 
       "'newWin','width=400,height=300,left=0,top=0,toolbar=No,location=No,scrollbars=No,status=No,resizable=No,fullscreen=No'); " + 
       "NewWindow.focus();void(0); " + 
       "NewWindow.document.write('hello');"); 

      navigateToURL(url, "_self"); 

     }   
    ]]> 
</fx:Script> 
<fx:Declarations> 
    <!-- Place non-visual elements (e.g., services, value objects) here --> 
</fx:Declarations> 

<s:Button click="urlJump()" /> 

1

Vous pouvez utiliser Flex API ExternalInterface pour appeler les fonctions javascript. et ainsi déclencher une nouvelle boîte de dialogue contextuelle.

http://learn.adobe.com/wiki/display/Flex/External+Interface

http://www.quirksmode.org/js/popup.html

http://blog.flexexamples.com/2008/03/09/calling-javascript-functions-from-your-flex-applications-using-the-externalinterface-api/

MISE À JOUR:

var urlstr:String = "javascript:NewWindow=window.open('"+<any string> +"','newWin','width=400,height=300,left=0,top=0,toolbar=No,location=No,scrollbars=No,status=No,resizable=No,fullscreen=No'); NewWindow.focus();void(0);"); 

    var url:URLRequest = new URLRequest(urlstr); 
+0

merci pour cela, mais l'ajout de code JS à la page html n'est pas vraiment une option - c'est pourquoi je cherche une solution Flex seulement. Merci de toute façon – Ryan

+0

Vous n'avez pas besoin d'ajouter du code JS à la page html. vous pouvez avoir du code JS dans votre AS3/MXML lui-même. – Satish

+0

Oh, ouais, mis à jour ma question - se rapprocher de ce que je veux – Ryan

0

Et vous voulez que la fenêtre Flex de rester ouvert et juste un popup de nouveau droit? D'après ce que je me souviens, ce n'est pas possible avec Flash car il doit passer par Javascript (window.open), cependant, vous pourriez être en mesure d'appeler directement en utilisant ExternalInterface:

if (ExternalInterface.available) 
{ 
    ExternalInterface.call("window.open", "http://www.adobe.com", "win", "height=200,width=300,toolbar=no,scrollbars=yes"); 
} 

Quant à l'URL, vous peut spécifier votre propre ou utiliser le schéma de données uri et cela devrait fonctionner.

+0

Hey, mettre une réponse que j'ai trouvé dans la question - fonctionne bien dans Firefox, juste besoin de tester Chrome et IE maintenant – Ryan

+0

Vous devriez juste répondre votre propre question et l'accepter :) –