2009-02-21 9 views
1

J'essaie d'utiliser le webkit intégré dans AIR pour écrire un petit navigateur avec HTML + Javascript.Comment accéder à un iframe dans une application Adobe AIR?

Je suis donc l'affichage de la page à l'URL tapé par l'utilisateur dans un iframe.

À partir de là, je voudrais:

  1. accéder au contenu du cadre, par exemple pour afficher la page dans un onglet.
  2. être alerté lorsque l'utilisateur a cliqué dans le cadre, par exemple pour mettre à jour la barre d'URL.

Pour 1), je sais que c'est interdit dans un navigateur pour des raisons de sécurité. Cependant, je suppose que cela devrait être possible dans une application AIR », peut être en demandant la permission de l'utilisateur (comme avec Gecko dans Firefox).

Est-ce que quelqu'un sait comment faire 1)? Y a-t-il un événement ou quelque chose à faire 2)?

Merci pour votre aide,

J.

Répondre

1

Pour accéder au contenu du cadre

En supposant que vous avez une carte d'identité ifrm pour le iframe:

var html:HTMLLoader = new HTMLLoader(); 
// ... 
// in the `complete` event handler 
trace(html.window.document.getElementById("ifrm").innerHTML); // content 

be alerté dès que l'utilisateur clique dans le cadre

Si vous pouvez avoir un gestionnaire d'événements javascript pour attraper des modifications à votre sous-élément iframe, vous pouvez appeler votre-gestionnaire d'événements fonction AS /.

Vous voulez lire this :)

+0

Dirk, Merci (encore) pour votre aide, je vais essayer. Comme je suppose, la première ligne est en ActionScript. Cela signifie-t-il que je dois charger mon iframe avec ActionScript? Y at-il un moyen d'obtenir ces données à mon Javascript? –

+0

La communication bidirectionnelle entre AS et JS est très possible. Je suppose que vous utilisez HTMLLoader pour charger la page. – dirkgently

2

Depuis Julien sonne comme il va me poursuivre en justice, je vais répondre;)

Donc, vous ne l'utilisez Flex Builder? Si vous l'êtes, il vous montrera les petits points rouges sur votre droite. Flex Builder est parfois grincheux et aide à fermer et rouvrir la solution. Et dans les cas extrêmes, l'IDE lui-même et le rechargement du projet. BTW: avez-vous créé une application Desktop (AIR)? HTMLLoader est là pour AIR seulement.

Si vous n'utilisez pas l'IDE Flex Builder, je vous suggère de passer par ce link. Il est recommandé par Adobe (here).

Votre code compile absolument bien de mon côté. Cependant, ce qui me dérange est ce que vous essayez d'atteindre avec ExternalInterface.

0

Dirk,

Que puis-je faire sans toi;) travaillez-vous pour Adobe ou quelque chose?

Je n'ai pas (encore) FB, en utilisant simplement le compilateur basique mxmlc. Je ne savais pas que HTMLLoader travaillait juste pour AIR !! ;) En utilisant un mxmlc compilé en douceur ...

Je suis Continuons ...

Par ailleurs l'interface externe est de pouvoir charger les pages dans mon cadre de mon « principale "javascript (je parle plus couramment JS que dans AS3 donc je veux minimiser AS3).

Maintenant, je vais ajouter l'autre façon: être capable d'appeler une fonction dans mon JS principal à partir d'une fonction dans AS3, traitant de l'événement "COMPLETE" sur le HTMLLoader et passant à JS la chaîne du HTML que je veux lire avec jQuery.

+0

Marquer ma réponse comme acceptée: D Heureux de vous aider. Cela semble amusant, ce que vous allez faire! Je me suis bien amusé avec AS et JS (et je suis tout aussi mal à l'aise dans ces deux cas). – dirkgently

Questions connexes