2

J'essaie d'obtenir l'adresse URL actuelle du lecteur Flash. Pas l'URL du fichier .swf, mais l'URL vers laquelle pointe le navigateur. Jusqu'ici j'ai utilisé:Récupération de l'URL actuelle dans Flash à partir de JavaScript à l'aide de ExternalInterface et de IE

var st:String = ExternalInterface.call("window.location.href"); 

Malheureusement cela ne fonctionne pas dans IE. De mes recherches, je peux voir que ça ne marchera pas avec IE d'une manière ou d'une autre.

La seule autre chose que j'ai trouvé sur Internet est de mettre une étiquette 'id' sur l'étiquette.

J'essaie donc de savoir si et/ou comment je peux:

  1. D'une certaine façon faire un appel à l'aide du ExternalInterface dans IE et d'autres navigateurs pour revenir me l'URL actuelle .

    OU

  2. Slap un id = attribut "PA" sur l'étiquette et ont AS3 lu cette balise et tirez-en tant que chaîne, sans en utilisant JavaScript

Ma limite est que je peux seulement ajouter la balise au HTML et ne peut pas ajouter de fonctions JavaScript. Cela doit être strictement fait dans AS3.

De toute façon, j'ai besoin de savoir sur quelle URL je suis. Toute aide est grandement appréciée.

Répondre

0

Juste une suggestion:

C'est probablement parce que IE a, pour une raison quelconque, a décidé que window.location.href can be used as a function. C'est idiot, mais c'est Microsoft pour vous.

Avez-vous essayé ExternalInterface.call ("String", "window.location.href")? Ce serait ma prochaine conjecture.

+0

Christopher, bon point sur la façon dont IE regarde href. J'ai essayé votre approche, malheureusement ActionScript retourne juste "window.location.href.toString" comme chaîne. :( –

0
ExternalInterface.call('window.location.href.toString'); 
+0

C'était mon premier essai Firefox fonctionne très bien ... mais toujours pas IE –

+0

C'est étrange, je l'ai testé dans IE6 et ça a bien fonctionné.Je n'ai pas IE7 ou IE8 disponible sur cette machine si, utilisez-vous IE7 ou IE8? – JStriedl

+0

oui, malheureusement IE7/8 sont mes plus grandes préoccupations.Merci cependant! –

-1

Avez-vous pensé à réaliser ce que vous voulez sans appel externe?

var domain:String = loaderInfo.loaderURL; 
trace(domain.substr(0, domain.indexOf("/", 8))); //Searches for first instance of "/" after the 8th character. 

Au-dessus, on trace le domaine de base en utilisant indexOf pour faire une sous-chaîne à partir du chemin complet vers le swf. Nous recherchons la première instance de "/" après le 8ème caractère pour renvoyer le point final de la sous-chaîne. La raison pour laquelle nous allons en 8 caractères est d'autoriser http: // et https: //; nous en avons besoin pour ne pas voir ces premiers "/". J'ai testé ça et ça a très bien fonctionné.

Il n'y a rien de mal avec les appels ExternalInterface, mais j'ai tendance à les sauvegarder en cas de besoin.

+0

Brian, en effet j'ai.Malheureusement, il existe plusieurs sous-domaines de tailles variables, comme aaaaa-bbbb-ccc ou abc.xyz.com .. Donc à votre crédit, j'utilise RegEx qui m'a aidé Merci beaucoup –

+0

Que voulez-vous dire par "Compter les ne fonctionne pas."? Peu importe comment imbriqués les sous-domaines peut être, le premier "/" après http: // ou https: // devrait être ce qui vient après .com ou .net etc., en nous donnant le bon chemin –

+0

Ceci obtient l'URL du swf lui-même pas l'URL que il est chargé –

5

Vous avez besoin de deux choses pour le faire fonctionner dans IE.Tout d'abord le code ActionScript:

var domain:String = ExternalInterface.call('function() { return window.location.href; }'); 

Deuxièmement, vous avez besoin valides classid et id atributs dans la balise <object>:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="myplayer_123123" ...> 

Si vous ne mettez pas ces attributs, ExternalInterface.call renvoie toujours null dans IE6/7/8, mais fonctionne comme prévu dans Firefox. Troisièmement, vous devez définir le paramètre allowScriptAccess sur 'always', afin d'activer l'utilisation de ExternalInterface.

<param name='allowScriptAccess' value='always'/> 
.. 
<embed allowscriptaccess='always' ...> 

.....

+0

je vais ha ve d'essayer cela. Merci! –

+0

Génial! Cela marche. Merci. – fernyb

+1

Ceci devrait être la réponse acceptée. Cela a juste sauvé mes fesses sur un délai assez serré pour une intégration d'application Wordpress/Flash et cela me rendait fou. Merci encore. –