1

Bonjour

Est-il possible de simuler un clic de souris à l'endroit où se trouve la souris ?

Petite explication :

Je suis en train de créer des petites animations cartoon qui apparaitront aléatoirement en bas de mon prochain site (par dessus le contenu), où je présenterai justement mes travaux en tant qu'animateur. Mais je suis confronté au vieux bug de Firefox avec la transparence des swf. Vous savez, quand on met un swf transparent par dessus un site en html, on ne peut plus cliquer sur aucun des liens en html car c'est le swf qui reçoit les clics malgré qu'il soit transparent... (dans IE ça marche, les clics passent à travers la partie transparente du swf.)

J'ai fouillé le web désespérement depuis deux jours mais apparemment jamais personne n'a trouvé de solution, à part n'afficher ce genre d'animations que chez les gens qui utilisent Internet Explorer...

Puis soudain j'ai eu une idée géniale ! Lorsque l'utilisateur clique, je ferme le bloc qui contient le swf (avec onclick="<mon bloc>.style.visibility='hidden';) et je simule aussitot en javascript un second clic au même endroit qui représentera le clic que voulait faire le visiteur. Bien sur, il ne verra pas la fin de l'animation, mais de toute façon s'il clique quelque part c'est qu'il n'avait pas envie de la voir.

Merci de m'aider.

2

je ne pense pas que ça soit possible, ça serait la porte ouverte à plein de truc pas glop non ?

3

Oui certains en feraient mauvais usage, mais moi ça me serait bien utile...

4

je crois que c'est possible en dhtml et que justement "on s'inquiète"
j'ai vu des news récemment.

5

je suis très intéressé par cet article alors, parce que ça serait grave :/

6

je dois l'avoir bookmarké au boulot. je regarderai demain.

7

ah oué, et à part de la "compilation" tu fais quoi au taf ? cheeky

8

de la revue de ce que j'ai compilé trioui

(non, un client FTPv6)

Microbug: voila, c'était ça: http://www.zataz.com/news/17910/Clickjacking.html
y'a plein de conditionnel mais on sait jamais.

9

./1 > Oui firefox sux, si tu fais du web, il faut t'y faire.

La seule solution que je vois à ton problème c'est assez moche mais bon avec fx on n'a pas le choix visiblement. C'est:
* une fois le chargement de la page terminée, pour chacun des éléments HTML clickables, tu enregistres leur position dans la page dans un tableau en js.
* quand on clique sur ton élément swf, tu récupères les coordonnées du clic, et tu retrouves l'élément sur lequel ca tomberait si y avait pas ce swf grâce au tableau que tu as rempli précedemment. Tu appeles son onclick.

Tout ce qui passe pas par le port 80, c'est de la triche.

10

squalyl (./8) :
de la revue de ce que j'ai compilé trioui

(non, un client FTPv6)

Microbug: voila, c'était ça: http://www.zataz.com/news/17910/Clickjacking.html
y'a plein de conditionnel mais on sait jamais.

En meme temps avec du JS tu peut faire ouvrir des centaines de liens, alors quel interet de "simuler" un clic dans ce cas ?
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

11

12

Je me doute bien (la question n'était pas spécialement pour toi, juste que c'était lié à cet article d'ou le cite)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

13

oui oui mais en effet je sais pas non plus vraiment si y'a besoin de se prendre le chou pour cet article.

14

Oui firefox sux, si tu fais du web, il faut t'y faire.
Bah d'habitude c'est Internet Explorer qui a un comportement inattendu.
La seule solution que je vois à ton problème c'est assez moche mais bon avec fx on n'a pas le choix visiblement. C'est:
* une fois le chargement de la page terminée, pour chacun des éléments HTML clickables, tu enregistres leur position dans la page dans un tableau en js. * quand on clique sur ton élément swf, tu récupères les coordonnées du clic, et tu retrouves l'élément sur lequel ca tomberait si y avait pas ce swf grâce au tableau que tu as rempli précedemment. Tu appeles son onclick.
Très bonne idée, merci ! Par contre il risque d'y avoir un probleme car mon swf reste fixe à l'écran alors que le contenu peut défiler.

Moi le seul truc que j'ai trouvé c'est de me contenter de faire apparaitre des anims dans un petit coin de l'écran, avec un fond pas tout à fait transparent et une croix en haut à droite pour donner l'impression au visiteur que c'est une fenetre qu'il peut fermer, comme ça il comprend qu'il ne peut pas cliquer en dessous et ça ne bloque pas toute la page. Voici un petit exemple sur une page de test, un petit ourson qui apparaitra la nuit. (bien sur, l'heure sera vérifiée en javascript chez le visiteur, pas en php sur le serveur, sinon ça ne serait pas cohérent. wink).

Pour qu'il se ferme automatiquement j'utilise <SCRIPT LANGUAGE=JavaScript>setInterval("AnimSWFourson_nuit_fr.style.visibility='hidden';",31500);</SCRIPT>, 31500ms étant environ sa durée. Si quelqu'un a une meilleure idée ça m'interresse car parfois ça rame et du coup le div disparait avant que l'animation soit terminée.

Cette araignée par contre est obligée de bloquer une plus grande partie de la page puisqu'elle la traverse...

15

(tiens c'est marrant ça, Dom qui poste un topic sur le Javascript ^^ [/blague de geek])

Si tu veux juste enlever ton animation flash quand elle est terminée, ce sera probablement plus efficace de faire en sorte que ce soit ton .swf qui demande l'exécution du code Javascript (avec getURL("javascript:" + ton_code)) au bon moment, quand le personnage est arrivé de l'autre coté de l'écran par exemple. Par contre pour le coup de superposer du flash et l'arrière-plan de la page je ne sais pas, ceci dit ça ne me semble pas très naturel comme contrainte.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

16

(tiens c'est marrant ça, Dom qui poste un topic sur le Javascript ^^ [/blague de geek])
wink
Si tu veux juste enlever ton animation flash quand elle est terminée, ce sera probablement plus efficace de faire en sorte que ce soit ton .swf qui demande l'exécution du code Javascript (avec getURL("javascript:" + ton_code)) au bon moment, quand le personnage est arrivé de l'autre coté de l'écran par exemple. Par contre pour le coup de superposer du flash et l'arrière-plan de la page je ne sais pas, ceci dit ça ne me semble pas très naturel comme contrainte.
Si je comprend bien tu parles d'action script c'est ça ? Le probleme c'est que je n'utilise pas Flash mais AnimeStudioPro et il ne permet pas de mettre de l'action script. Est-il possible d'ajouter de l'action script dans un swf déjà exisant, sans Flash ?

17

Dom (./16) :
Si je comprend bien tu parles d'action script c'est ça ? Le probleme c'est que je n'utilise pas Flash mais AnimeStudioPro et il ne permet pas de mettre de l'action script. Est-il possible d'ajouter de l'action script dans un swf déjà exisant, sans Flash ?

Ah. Quelle idée d'utiliser autre chose que Flash grin

Plus sérieusement, je ne sais pas. Il y a peut-être moyen de décompiler le .swf pour ajouter un petit bout d'Action Script, mais :

- Je ne suis pas sûr que ça fonctionne
- C'est vraiment très crade comme solution
- Je ne connais aucun décompileur Flash gratuit
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

18

http://flasm.sourceforge.net/ (mais c'est un désassembleur, pas un décompilateur)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

19

un désassembleur, c'est à dire que ça donne quoi comme résultat dans le cas de l'AS ? o_O

je ne sais pas comment est traité l'action script, mais avec des trucs comme sothink swf decompiler on récupère le code quasiment à l'identique (même les noms de variable sont conservés), donc la transformation (si il y en a une) ne doit pas être très violente
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

20

C'est du bytecode, et si tu peux retrouver le code original c'est parce que la génération est pas du tout optimisée :
http://flasm.sourceforge.net/ :

Flasm optimizations

After you're done in ActionScript, and the code is still slow, you can start to optimize with Flasm. Basically only two meaningful low-level features are not accessible from ActionScript and therefore subject of Flasm work: stack and registers.

Let's optimize a simple loop using stack. Our ActionScript is

for (var n=0; n<1000; n++) {
  someFunction(n);
}


Flash compiles this loop to the following bytecodes:

constants 'n', 'someFunction'    
push 'n', 0.0
varEquals
  label1:
push 'n'
getVariable
push 1000
lessThan
not
branchIfTrue label2
 
push 'n'
getVariable
push 1, 'someFunction'
callFunction
pop
 
push 'n', 'n'
getVariable
increment
setVariable
branch label1
  label2:	 // Store all variables in constant pool
// Push the string 'n' and starting 0 onto the stack
// Initialize loop counter: n = 0
// Start of the loop
 
// Get the value of 'n' again
// Push loop bound
// Evaluate boolean condition: “n < 1000?”
// Invert: now “n >= 1000?”
// If “true” is on stack, go to the end of the loop
 
// Loop body
// Get the value of 'n' again
// Push the number of args (1) and function name
// function call is made with n as argument
// Pop the possible function result away — it's unused
 
// Push 'n' two times
// Evaluate 'n' again
// n+1 on stack now
// n = n+1
// jump to the loop start — unconditional
// end of the loop — addressed with branchIfTrue above

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

21

Zephyr (./19) :
un désassembleur, c'est à dire que ça donne quoi comme résultat dans le cas de l'AS ? o_O

je ne sais pas comment est traité l'action script, mais avec des trucs comme sothink swf decompiler on récupère le code quasiment à l'identique (même les noms de variable sont conservés), donc la transformation (si il y en a une) ne doit pas être très violente

*normalement* l'AS est en fait de l'ECMAScript (donc tres proche du JavaScript) est la ou je m'en était arreté c'est que la machine virtuelle de flash est un bytecode interpreter avec possiblement du JIT aussi donc le bytecode doit etre tres tres proche du source original

(edit pollux dit globalement la meme chose)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

22

ah ok, je suis un peu déçu ^^
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

23

La vm action script développée par Adobe est open source, si y'en a qui veulent voir à quoi ça ressemble :
http://www.mozilla.org/projects/tamarin/
So much code to write, so little time.

24

Pour revenir au sujet de départ :
Godzil (./10) :
En meme temps avec du JS tu peut faire ouvrir des centaines de liens, alors quel interet de "simuler" un clic dans ce cas ?
Pense aux boîtes de dialogue de confirmation avant d'installer une extension, ou aux boutons pour uploader un fichier...
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

25

on pourrait les contrôler avec un clic dans une page ceux là? trifus

26

Zerosquare (./24) :
Pour revenir au sujet de départ :
Godzil (./10) :
En meme temps avec du JS tu peut faire ouvrir des centaines de liens, alors quel interet de "simuler" un clic dans ce cas ?
Pense aux boîtes de dialogue de confirmation avant d'installer une extension, ou aux boutons pour uploader un fichier...

Heu j'ai pas cru comprendre qu'on pouvais cliquer n'importe ou, juste pouvoir cliquer dans une page en elle meme, pas dans le chrome du navigateur (et encore moins dans les fenetres de l'OS)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

27

Je ne sais pas si c'est effectivement possible, c'est juste quelque chose qui m'est venu à l'esprit. Si effectivement ça se limite à simuler un cliquer sur des liens, je ne vois pas trop l'"intérêt" non plus.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

28

Au niveau de la "faisabilité", cf par exemple :
http://ha.ckers.org/blog/20081007/clickjacking-details/
et http://jeremiahgrossman.blogspot.com/2008/10/clickjacking-web-pages-can-see-and-hear.html
(pas lu en détails ; mais ça a l'air de se rapprocher du sujet ^^ )
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

29

Hum le clickjacking est encore pire ^^

http://www.youtube.com/watch?v=gxyLbpldmuU
http://blog.guya.net/2008/10/07/malicious-camera-spying-using-clickjacking/


C'est faire faire des operations par le "joueur" sans qu'il s'en rende compte grin

En gros vous ne verez plus les jeux de kek de la meme maniere wink
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.