2009-09-03 12 views
3

J'avais cette discussion avec un de mes collègues. Il a créé un morceau de code qui met un a-href autour d'un objet où un flash doit être chargé. Quand j'ai vu ça j'ai presque pleuré et je lui ai dit d'utiliser le clickTag à la place.Est-ce qu'un a-href autour d'un objet (c'est-à-dire flash) est une mauvaise idée ou existe-t-il réellement une norme sur la façon dont un clic sur un tel objet doit être géré?

Il m'a dit que cela fonctionne bien avec le a-href. J'ai vérifié, et le code a bien fonctionné dans ie6-8 et firefox (tous ayant flashplayer 9 ou 10 installé).

Depuis que je KNEW c'est une très mauvaise idée d'utiliser un-href J'ai fait un peu de recherche sur pourquoi ne pas l'utiliser. De là, j'ai vérifié les normes (http://www.w3.org/TR/html401/struct/objects.html) et googlé autour.

Mais je n'ai pas trouvé d'explication pourquoi cela devrait ou ne devrait pas fonctionner (je sais que parfois ça ne marche pas).

Nous nous sommes retrouvés avec une solution pour utiliser les deux - l'a-href environnant et passé le clickTag (fyi: nous ne savons pas quel type de swf sera affiché car il vient d'un cms).

Pourquoi le a-href/flash fonctionne-t-il parfois et parfois non, et quelle serait la manière "standard" de faire quelque chose comme ça? Qu'en est-il des autres objets inclus (svg/movie/audio/..?) Existe-t-il un standard définissant comment ces choses (clics sur des objets incorporés comme flash ou un lecteur multimédia) sont traitées (ie le javascript pour arrêter de propager le événement de clic)?

Répondre

4

Il n'y a pas de standard contre cela, mais cela conduira inévitablement à des résultats imprévisibles à travers différentes combinaisons navigateur/plateforme. Faire un simple search et en passant en revue les résultats montre qu'il y a beaucoup de gens qui ont eu des problèmes avec juste hyperlien le swf. Ajouter à la fois le lien hypertexte et le clickTag est plutôt inutile, vous dupliquez la fonctionnalité puisque si le visiteur a la bonne version de Flash, alors ils vont obtenir le film Flash et le clickTag va être utilisé. Ce que vous devriez faire est d'avoir le lien hypertexte comme solution de repli, de sorte que si Flash n'est pas installé, les utilisateurs peuvent toujours accéder à votre lien hypertexte. Les bibliothèques telles que SWFObject rendent cela très facile à faire.

+0

quoi - comme dans ce cas - vous ne savez pas à l'avance quel type de swf est téléchargé/affiché par la gestion de contenu? C'est pourquoi je racontais toute l'histoire. il n'y a aucune garantie que le href fonctionnera. Qu'en est-il des autres objets sauf Flash? – Niko

+1

Les objets en hyperlien se comporteront toujours de manière imprévisible car l'objet lui-même peut intercepter l'événement click et exécuter son gestionnaire de clic par défaut. Cela peut ou ne peut pas fonctionner, dépend de l'objet et dépend de la combinaison navigateur/plate-forme! –

+0

C'est ce que je pense. Ou l'obejct propage l'événement - exécutant ainsi le a, ou non. Je suis toujours à la recherche d'une déclaration de IE. w3c ou au moins mozilla, adobe ou ms qui décrivent ce comportement. D'après votre réponse et ma propre recherche, je comprends qu'il n'y a simplement pas de définition standard ou claire qui explique/définit comment cela devrait fonctionner ... J'espérais que quelqu'un pourrait pointer vers une explication claire. – Niko

2

Je ne le recommanderais pas. Mon ordinateur fonctionne sous Linux 64 bits, et Flash se comporte un peu bizarre dans Firefox. (D'une part, il agit comme si l'index z est toujours plus grand que tout le reste.) Je ne l'ai pas testé, mais je suppose qu'il ne se comporterait pas bien. En bout de ligne, c'est le genre de chose que vous voudriez tester sur tous les navigateurs sur toutes les plateformes, et il serait préférable de l'éviter si possible.

+0

Exactement ... s'écarter de la façon dont les gens font les choses normalement ne fait que demander un problème multiplateforme sur plusieurs navigateurs. PARTICULIÈREMENT quand il s'agit d'objets embarqués. – Zoidberg

+0

Ce n'est pas vraiment la question - je sais par expérience que c'est une mauvaise idée - la question est plus: Y a-t-il un standard qui définit comment ces choses (comme les clics sur les objets incorporés) sont traitées? – Niko

+0

@Niko: Eh bien, le titre de la question est: "Est-ce qu'un a-href autour d'un objet (c'est-à-dire flash) est une mauvaise idée?" –

0

La méthode standard pour le faire est d'utiliser l'attribut [onclick] pour passer dans une expression JS, ou pour écouter l'événement de la souris click, une fois un clic avant mise au point a été capturé sur la ligne <embed> et <object> est transférée vers le plug-in.

Je pense si le <object> et <embed> enrouler autour du plug-in contenu correctement, <a>devrait envelopper correctement autour <object> et <embed> ainsi. Je voudrais également croire naturellement que lorsque <object> et <embed> capturent l'événement clic de souris, qu'il bulles également correctement.Mais je ne suis pas sûr à 100% si ce type de comportement peut être modifié par le plug-in, causant <a> ne pas obtenir son affichage correctement calculé ou un autre modèle d'événement ne tirant pas l'événement sur <a>.