Question

Est-il possible d'obtenir les coordonnées x, y d'une application Flex au sein d'une page HTML? Je sais que vous pouvez utiliser ExternalInterface.ObjecID pour obtenir l'attribut "id" de la balise object dans Internet Explorer ou l'attribut name de la balise incorporée dans Netscape " mais je n'arrive pas à franchir ce pas. Il semble qu'il devrait être possible d'obtenir une poignée sur cet objet incorporé. Aucune suggestion?

Merci.

Était-ce utile?

La solution

Je pense que la meilleure chose à faire est d'inclure une sorte de bibliothèque JavaScript sur la page HTML, disons jQuery, et d'utiliser ses fonctions pour déterminer la position et la taille des nœuds DOM. Je le ferais plus ou moins comme ça:

var jsCode : String = "function( id ) { return $('#' + id).offset(); }";

var offset : Object = ExternalInterface.call(jsCode, ExternalObject.objectID);

trace(offset.left, offset.top);

Notez qu'il s'agit de code ActionScript, mais qu'il exécute du code JavaScript via ExternalInterface . Il utilise jQuery et en particulier sa méthode offset qui renvoie les décalages gauche et supérieur d’un nœud DOM.

Vous pourriez vous passer de jQuery si vous examiniez comment la méthode offset est implémentée et si ce code est inclus à la place de l'appel à jQuery. De cette manière, vous n’auriez pas besoin de charger jQuery dans le code HTML et l’application Flex serait autonome. La raison pour laquelle je suggère d'utiliser une bibliothèque telle que jQuery est que les navigateurs font ces choses différemment. Je ne sais pas si le calcul des compensations est très différent d'un navigateur à l'autre, mais il ne fait pas de mal d'être isolé des différences de navigateur.

Le code JavaScript de mon exemple est une fonction anonyme permettant de lui transmettre l'ID de la balise embed / object en tant que paramètre de ExternalInterface.call , mais vous pouvez simplement utiliser la concaténation de chaînes. si vous voulez:

var jsCode : String = "$('#' +" + ExternalInterface.objectID + ").offset()";

var offset : Object = ExternalInterface.call(jsCode);

Cela fonctionnerait aussi, je pense que la première version est plus élégante.

Autres conseils

Si vous essayez simplement de mesurer où en est le contenu d'une page en tant qu'utilisateur externe, la seule chose qui me vient à l'esprit est une extension Firefox appelée MeasureIt, je l'ai utilisée occasionnellement pour diverses mesures sur des pages Web.

Essayez-vous de faire cela par programme à partir de la page incorporée elle-même et si oui quelle langue?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top