2009-09-03 3 views
3

У меня была эта дискуссия с одним из моих коллег. Он создал кусок кода, который помещает a-href вокруг объекта, где должна быть загружена вспышка. Когда я увидел это, я чуть не закричал и попросил вместо него использовать clickTag.Является ли a-href вокруг объекта (т. Е. Flash) просто плохой идеей или действительно существует стандарт о том, как нужно кликнуть на такой объект?

Он сказал мне, что он отлично работает с a-href. Я проверил это, и код работал нормально в ie6-8 и firefox (все из которых были установлены flashplayer 9 или 10).

С I KNEW что его очень плохая идея использовать a-href. Я немного исследовал, почему бы не использовать его.

Оттуда я проверил стандарты (http://www.w3.org/TR/html401/struct/objects.html) и googled вокруг.

Но я не нашел объяснений, почему это должно или не должно работать (я знаю, что иногда это не работает).

Мы закончили с решением использовать оба - окружающий a-href и передали clickTag (fyi: мы не знаем, какой SWF будет отображаться, поскольку он исходит из cms).

Почему a-href/flash иногда срабатывает, а иногда и нет, и что было бы «стандартным» способом сделать что-то подобное? Что касается других включенных объектов (svg/movie/audio/...?) Есть ли стандарт, определяющий, как обрабатываются такие вещи (например, щелчки на встроенных объектах, таких как flash или медиаплеер) (т. Е. Способ javascript, чтобы прекратить распространение событие щелчка)?

ответ

4

Существует нет стандарта против него, но это, безусловно, приведет к непредсказуемым результатам в разных комбинациях браузера/платформы. Выполнение simple search и просмотр результатов показывает, что есть много людей, у которых были проблемы с просто гиперссылкой на swf.

Добавление гиперссылки и clickTag довольно бессмысленно, вы дублируете функциональность, так как если у посетителя есть правильная версия Flash, тогда они собираются получить Flash-ролик и будет использоваться clickTag. Вы должны сделать гиперссылку как резервную, так что если Flash не установлен, люди могут получить доступ к вашей гиперссылке. Библиотеки, такие как SWFObject, делают это очень легко.

+0

что - как в этом случае - вы не знаете заранее, какой swf загружается/отображается контентом? Вот почему я рассказывал всю историю. afaik не гарантирует, что href будет работать. Также как насчет других объектов, кроме вспышки? – Niko

+1

Объекты гиперссылок всегда будут вести себя непредсказуемо, потому что сам объект может перехватить событие click и выполнить его обработчик кликов по умолчанию. Он может или не работает, зависит от объекта и зависит от комбинации браузера/платформы! –

+0

То, что я рисую. Либо obejct распространяет событие - таким образом, выполняется a, или нет. Я все еще ищу заявление от ie. w3c или, по крайней мере, mozilla, adobe или ms, которые описывают это поведение. Из вашего ответа и моих собственных исследований я понимаю, что просто нет стандартного или четкого определения, которое объясняет/определяет, как оно должно работать ... Я надеялся, что кто-то может указать на четкое объяснение. – Niko

2

Я бы порекомендовал против этого. Мой компьютер работает под 64-разрядной версией Linux, а Flash ведет себя немного забавно в Firefox. (Во-первых, он действует так, как будто z-index всегда больше, чем все остальное.) Я его не тестировал, но я подозреваю, что это не будет хорошо. Итог - это то, что вы хотите протестировать во всех браузерах на всех платформах, и было бы лучше избегать его, если это возможно.

+0

Точно ... отступая от того, как люди обычно делают вещи, просто требуется кросс-браузерная кросс-платформенная проблема. ОСОБЕННО, когда речь идет о встроенных объектах. – Zoidberg

+0

Это не вопрос. Я знаю по опыту, что его плохая идея - вопрос более: есть ли стандарт, определяющий, как обрабатываются такие вещи (как щелчки на внедренных объектах)? – Niko

+0

@Niko: Ну, название вопроса: «Является ли a-href вокруг объекта (т. Е. Flash) плохая идея?» –

0

Стандартный способ сделать это состоит в использовании атрибута [onclick] передать в выражение JS, или прослушивать событие click мыши, когда щелчок был захвачен на инлайн <embed> и <object>, прежде чем фокус передается к плагин.

Я имею в виду, если <object> и <embed> обертка вокруг плагиных содержания должным образом, то <a>должна обертки правильно вокруг <object> и <embed>, а также. Я также хотел бы, естественно, поверить, что когда <object> и <embed> захватывают событие мыши, он также правильно пузырится вверх.Но я не уверен на 100%, если подобное поведение может быть изменено подключаемым модулем, в результате чего <a> не будет правильно вычисляться, или какая-либо другая модель событий не активирует событие на <a>.

 Смежные вопросы

  • Нет связанных вопросов^_^