2010-12-15 6 views
2

Est-il possible de cliquer/obtenir des valeurs/actions ActionScript en utilisant Javascript sans ExternalInterface?Interaction entre Javascript et Flash/ActionScript sans ExternalInterface?

Comment fonctionne GreaseMonkey? Puis-je le faire en utilisant GreaseMonkey?

+0

presque sûr vous ne pouvez pas, mais il y a autres interfaces que vous pouvez utiliser pour créer des macros pour interagir avec flash, google pour "addon macros firefox flash" ou quelque chose comme ça – yoda

+0

Mais comment ceux qui mettent des jeux flash hack injectent le code? Voir http://userscripts.org/scripts/review/32886. Je n'ai pas compris cette partie var swf = document.embeds [0] || $ ("flashcontent") || single ("// objet [contains (@data, '.swf')]"); unsafeWindow.game = swf; var actions = single ("// div [@ class = 'game_actions']") || single ("// div [@ class = 'channeHolder']") || $ ("header") || $ ("contenu") || document.body; – Rajasankar

Répondre

1

il est assez difficile, mais peut-être possible de mettre en œuvre LocalConnection ou NetStream connexion directe (selon la méthode send()) en javascript :)

l'autre est d'utiliser quelque chose comme un tampon qui va être vérifié par SWF et javascript chaque certain temps. Un simple script php sera un bon tampon, aussi peut-être ces données peuvent être stockées dans la barre d'adresse du navigateur après#

et une autre drôle d'idée: vous pouvez développer un messager SWF qui sera chargé chaque fois que vous devez passer un message à clignoter. Le message est passé au messager sous forme de variables et il crée un LocalConnection avec le swf principal et transmet les données. mais la seule façon d'appeler js du flash est navigateToURL ou peut-être sendToURL

2

que diriez-vous

swf=document.embeds[0];//or 1 or 2 etc 
swfvar1=swf.GetVariable("swfvariable"); 
swfvar2="something"; 
swf.SetVariable("swfvariable",swfvar2); 

son GetVariable ("swfvar"); avec le nom de la variable sous forme de chaîne et SetVariable ("swfvar", jsval); avec le nom swfvar comme une chaîne et la valeur de ce que vous voulez js

pour exécuter la fonction, il y a 2 façons 1. en utilisant le code ci-dessus avec le swf var, swf.SwfFunc (params); simple, non? Oui.

2.aussi avec le code ci-dessus swf.GetVariable ("SwfFunc (params)"); car il obtient la valeur de la fonction, il exécute tout pour rechercher une valeur de retour, peut être mauvais si les params sont laids avec des citations qui se chevauchent car il y a déjà des citations dans l'appel

personnellement, j'aime la méthode 2 car il peut être utilisé à d'autres fins, comme l'exécution de code. comme celui-ci

swf.GetVariable(" 
function(){ 
//whatever 
}"); 

Je trouve cela très utile, mais rappelez-vous que vous devez échapper aux citations dans cette fonction il est en fait comme l'injection d'un eval, mais mieux

Questions connexes