Исправление ошибки работы флеша на сайте (1 с причин)

Сегодня столкнулся с проблемой, что не работает Flash на некоторых сайта и что самое обидное – не работает во всех браузерах (FF2, FF3, FF3.5 Opera, Chrome, и Safary) в тоже время прекрасно пашет на ИЕ.

Помимо симптомов получит так-же заверения от владельца сайта, что это все работало буквально пол года назад.

То что проблема заключается на части клиента – практически понятно. Вспомнив что за последние пол года изменялось – был найден виновник – Flash 10.

Детализация проблемы показала, что она заключается в неправильности определения версии флеша (на всех подопытных использовался FlashObject).

Старый метод определял как 1 число и соответственно получалось, что версия = “1”. В то-же время Internet Explorer отдавал версию не так как все и там все работало нормально.

После некоторых раздумий на эту тему было принято решение дописать всего 2 строчки, которые хоть и являются возможным багом, но для большинства клиентов будут работать нормально.

Вот что получилось:

function getFlashVersion() {
var ua = navigator.userAgent.toLowerCase();
var isIE = (ua.indexOf(“msie”) != -1 && ua.indexOf(“opera”) == -1 && ua.indexOf(“webtv”) == -1);
var version = 0;
var lastVersion = 15;
var i;
if (isIE) {
try {
for (i = 3; i <= lastVersion; i++) {
if (eval(‘new ActiveXObject(“ShockwaveFlash.ShockwaveFlash.’+i+'”)’)) {
version = i;
}
}
} catch(e) {}
} else {
for (i = 0; i < navigator.plugins.length; i++) {
if (navigator.plugins[i].name.indexOf(‘Flash’) > -1) {
version = ((navigator.plugins[i].description.charAt(16)) > version) ? (navigator.plugins[i].description.charAt(16)) : version;
if (version == 1){
version = parseInt(version+navigator.plugins[i].description.charAt(17));
}
}
}
}
return version;
}

Версию FlashObject с правильным обработчиком можно скачать flashobject_new.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *