Не обнаружение Flash 10: самая распространенная в мире ошибка веб-видео?

Вот вопрос: как лучше всего убедиться, что ваше требование для Flash версии «x» на сайте будет правильно определять наличие более поздней версии Adobe Flash Player версии «10» (или «1y», если на то пошло)?

Вот загадка: почему так много сайтов, требующих Flash Player версий 8 и 9 или выше, не могут обнаружить Flash Player версии 10?

А вот и сочный фон в разноцветных снимках экрана в моем посте "WTF: The Adobe Flash Version 1x Кризис."

ОБНОВЛЕНИЕ 2: С тех пор я подтвердил, что проблема, которую я вижу, не связана с неправильным сравнением той же или более поздней версии. Похоже, что некоторое обнаружение на стороне клиента не может определить, установлен ли вообще какой-либо Flash Player, не говоря уже о его версии. Я также обнаружил, что если я работаю как администратор, у меня нет проблем: обнаружение Flash 10 работает нормально. Это делает банку со змеями больше, чем я думал. Я пока не готов изменить заголовок этого вопроса и продолжаю анализировать клиентский код, чтобы увидеть, какая чудесная логика разворачивается. Подробности об этих последних откровениях есть в моем блоге.

Обновлено: Хотя я провел поиск, я пропустил связанный с этим вопрос "Почему после обновления до Flash 10 не воспроизводятся флеш-видео?". Там есть интересные предположения, но они не дошли до сути. Также неясно, как была решена проблема Леви. Интересно ... Может быть, здесь мы сможем разобраться во всем.


Некоторая предыстория

Мне удалось установить новую версию Adobe Flash Player 10.0.12.36 в качестве чистой установки (предыдущие версии были удалены с помощью программы удаления, предоставленной Adobe).

Первое разочарование было замечено, когда я не смог воспроизвести последнюю программу NCIS с сайта CBS Television, ни в HD, ни в старом обычном стандарте. Но я мог проигрывать видео своих любимых программ на Hulu. Чем больше я нюхал, тем больше раз находил эти неприятные сообщения you-don't-have-Flash, you-need-a-later-version-of-Flash, your-version-of-Flash, старые сообщения, которые предлагали кнопка для скачивания.

Каждый раз, когда я нажимал кнопку загрузки / обновления и сообщал сайту Adobe выполнить установку (которая должна завершиться неудачно, если попытаться, потому что я не работаю как администратор), моя версия 10.0.12.36 была подтверждена мгновенно, и попытки обновления не выполнялись. .

Любопытно, а?


Соревнование

Думаю, я точно знаю, какая наиболее вероятная ошибка в скрипте обнаружения Flash, который используют люди. Это слишком сочно, чтобы не быть ошибкой.

Это не означает, что все сайты, которые не могут обнаружить версию 10, страдают от одной и той же ошибки. Я просто думаю, что тот, который я имею в виду, действительно вероятен. Мне, наверное, стоит где-нибудь запечатать мою теорию в конверте. А пока давайте посмотрим, что может предложить сообщество StackOverflow и чем мы закончим урок.

Я говорю, что ошибка действительно простая и очень забавная. Что ты говоришь?

Любое решение для этого? Любопытный!!!

Matt Rogish 26.01.2009 00:58
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
1
1 735
3

Ответы 3

Я предполагаю, что обнаружение будет происходить из строки, которая похожа на «Flash Player версии X.Y», выполнив что-то вроде «получить символ перед '.' и преобразовать его в число ". Я сам делал это несколько раз, это просто глупо.

Большой! Я бы никогда об этом не подумал. Это определенно будет учитывать некоторые из сообщений, которые я получаю, что я использую версию "0" или моя версия старше, чем версия (8 или 9), которую они хотят. Возможно, вы на чем-то натолкнулись. Посмотрим, что говорят другие.

orcmid 07.12.2008 00:39

В примере кода, с которым я столкнулся, используется split, чтобы разбить строку версии на массив строк, чтобы этой ошибки не произошло. Однако не имеет значения, как будут сравниваться детали после этого. Кажется, существует огромное количество способов сделать это неправильно. Интересно, кто будет победителем.

orcmid 08.12.2008 22:23

К сожалению, проблема вызвана плохим обнаружением версии поставляется со вспышкой. Правильно, дрянной код, который он фактически создал с помощью Adobe Flash (не знаю, какие версии), поэтому он так широко распространен.

Лично я использую swfObject для встраивания флеш-памяти.

Я надеялся, что это не их дело. Можете ли вы предоставить ссылки на то, где Adobe поставляет код обнаружения. Я не совсем понимаю, как его использовать на сайте, который обслуживает видеопоток и выбирает Flash Player.

orcmid 07.12.2008 00:37

Сайт swfObject очень удобен. Я нашел Adobe Flash Player Detection Kit 1.5 в adobe.com/products/flashplayer/download/detection_kit. Мне будет интересно посмотреть, не взорвали ли они его.

orcmid 07.12.2008 00:44

Сейчас я прорабатываю образец обнаружения на стороне клиента Adobe Flash Player Detection Kit 1.5. Пока проблема не в сравнении, а вообще в поиске Flash Player. Теперь мне нужно покопаться в GetSwfVer, чтобы понять, почему он не находит Flash Player.

orcmid 07.12.2008 11:12

Ах, я также просто случайно определил, что обнаружение Flash Player работает, когда я запускаю из учетной записи администратора, но не из учетной записи с ограниченным доступом. Я наблюдал подобное в других условиях. Может быть, я смогу это точно определить, продолжая изучать анатомию примера со стороны клиента.

orcmid 07.12.2008 21:20

Я предполагаю, что javascript выполняет сравнение строк, а в строке строк "10" <"9".

Кроме того, Flash10 несколько изменил свою модель безопасности (сломав инструмент, который я использую под названием SWFUpload), так что это может быть связано с этим (см .: http://benr75.com/articles/2008/11/25/swfupload-with-flash-10-fix)

Я тоже об этом подозревал. Поразмыслив, я обнаружил, что JavaScript не дает сбоев, как strcmp в C. x <y в JavaScript всегда является числовым сравнением, и он преобразует любые строки в числа перед сравнением. Итак, в коде обнаружения JavaScript, который я проверяю, это не так.

orcmid 07.12.2008 11:07

alert ("В строковом пространстве \" 10 \ "равно" + ("10" <"9"? "меньше": "больше") + "чем \" 9 \ ".")

some 07.12.2008 19:56

if ("10" <"9") {alert ("10 меньше 9 в строке")}

some 07.12.2008 19:59

var high = "10", low = "9"; if (high <low) {alert (high + "меньше" + low)}

some 07.12.2008 20:01

@orcmid: попробуйте три приведенных выше примера JavaScript. Все они дадут вам результат, что 10 меньше 9, поскольку они сравнивают строки (проверено в Firefox, IE, Opera и Crome).

some 07.12.2008 20:07

Если оба параметра являются строками, они будут сравниваться как строки. Но если одно из них числовое, строка будет преобразована, поэтому alert ("10" <9) вернет false.

some 07.12.2008 20:13

В моей книге «Чистый JavaScript» написано, что «<» всегда является числовым сравнением, поэтому ошибка произойдет, если кто-то поверит этому. К счастью, в образце клиентского кода и файла .js для Adobe Flash Player Detection Kit 1.5 используются разбиения для синтаксического анализа строк версии и делается числовой символ «<» с помощью parseFloat.

orcmid 08.12.2008 22:20

Итак, теперь я знаю, почему там используется parseFloat. Проблема, с которой я столкнулся, может заключаться в полном отказе от обнаружения установленного Flash Player, даже при отсутствии проверки версии.

orcmid 08.12.2008 22:21

Другие вопросы по теме