FlashCheck 1.2
Скрипт предназначен для проверки версии Flash, поддерживаемой браузером и вставки вместо Flash-ролика картинки, если версия не поддерживается браузером. Кроме того, версия с переключателем позволяет отключать/включать Flash на странице.
Скрипт в действии
Версия с переключателем в действии
История создания
Changelog, поддерживаемые браузеры, глюки
Листинги в отдельном текстовом файле (при копировании кода в Netscape 4 с открытой html-страницы имеются проблемы с абзацами и пробелами.)
Как прикрутить:
В каждом месте страницы, где необходимо вывести флеш, вставляем такой код:
<script>insFl(5,'fl.swf','img.gif','http://',600,400)</script><noscript><a
href="http://"><img src=img.gif
border=0></a></noscript>
Значения, выделенные жирным шрифтом оранжевого цвета, наобходимо заменить:
5 | точная версия flash-ролика (обязательно без кавычек!); |
'fl.swf' |
ссылка на flash-файл; |
'img.gif' |
ссылка на альтернативную картику; |
'http://' |
ссылка, которая выведется для картинки; |
600 |
ширина картинки/ролика в пикселах; |
400 |
высота картинки/ролика в пикселах. |
В <head> документа вставляется такой код:
<script language="JavaScript1.2">window.onerror=function(){return true}</script>
<script>
var ie=0
var f=0
var fz=0
var n=navigator
</script><script language="JScript">
if (n.platform=='Win32' && !window.opera){ie=1
for (var i=3;i<10;i++){if (eval('new ActiveXObject("ShockwaveFlash.ShockwaveFlash.'+i+'")')){f=i}}}
</script><script>
if ((ie==0)&&(n.plugins))
{for (var i=0;i<n.plugins.length;i++){if (n.plugins[i].name.indexOf('Flash')> -1)
{fz=parseInt(n.plugins[i].description.charAt(16))
if (fz>f) f=fz; }}}
function insFl(v,fl,gif,lnk,w,h)
{var d=' width='+w+' height='+h
if (f>=v) {
document.write('<object
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+d+'><param name=movie value='+fl+'><embed
src='+fl+' quality=high'+d+'></embed></object>')}
else {document.write('<a
href='+lnk+'><img src='+gif+d+' border=0></a>')}}
</script>
Для варианта скрипта с переключателем в <head> вместо вышеприведённого кода
вставляется такой код:
<script language="JavaScript1.2">window.onerror=function(){return true}</script>
<script>
var fl=1
var ie=0
var f=0
var fz=0
var n=navigator
var d=document
var t=new Date()
t.setTime(t.getTime()+11e10)
var e='; expires='+t.toGMTString()+'; path=/'
if (d.cookie.indexOf('fl=')<0){d.cookie='fl='+fl+e}
var dc=d.cookie
fl=parseInt(dc.charAt(dc.lastIndexOf('fl=')+3))
function fla(s)
{
d.cookie='fl='+s+e
location.reload()
}
</script><script language="JScript">
if (n.platform=='Win32' && !window.opera){ie=1
for (var i=3;i<10;i++){if (eval('new ActiveXObject("ShockwaveFlash.ShockwaveFlash.'+i+'")')){f=i}}}
</script><script>
if ((ie==0)&&(n.plugins))
{for (var i=0;i<n.plugins.length;i++){if
(n.plugins[i].name.indexOf('Flash')>
-1)
{fz=parseInt(n.plugins[i].description.charAt(16))
if (fz>f) f=fz; }}}
function insFl(v,fls,gif,lnk,w,h)
{var d=' width='+w+' height='+h
if ((fl!=0)&&(f>=v))
{
document.write('<object
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+d+'><param
name=movie value='+fls+'><embed
src='+fl+' quality=high'+d+'></embed></object>')}
else {document.write('<a
href='+lnk+'><img src='+gif+d+' border=0></a>')}}
</script>
Кроме того, в варианте с переключателем необходимо включить в документ код самого
переключателя:
<script>d.write('<b>переключить
на:</b> <a href="javascript:fla(1)">flash</a> | <a
href="javascript:fla(0)">html</a>')</script>
© 2002-2003 by Svarga (по найденным глюкам или необходимым изменениям пишите, бум разбираться :)
######################################################
CHANGELOG ;)
######################################################
v.1.3b
[-] Устранена проблема с MSIE 5+: при установленном Microsoft Script
Debugger’е выдавалось предупреждение об ошибке.
[~] Упрощена проверка win32 MSIE
[~] Исправлена неточность в версии с переключателем, вызывавшая глюк в
MSIE 4.0
v.1.2
[~] Исправления по определению версии Flash-плагина в MSIE (устранены
проблемы с 7-й версией).
[~] Исправлена работа с cookie.
v.1.1
[+] Для браузеров, поддерживающих Netscape-плагины (Opera, Mozilla,
Netscape...), добавлена проверка наиболее новой версии плагина-- теперь
при нескольких установленных плагинах скрипт правильно определяет
поддерживаемую версию флеша-- ранее учитывалась версия лишь одного из
плагинов, причем не обязательно самого нового (заметил эту ошибку
благодаря Opera 7.10b3, подцепившей по нескольким моим Нетскейпам и
Операм плагины трёх версий-- 3, 5, 6, причем скрипт почему-то определял
поддерживаемую версию флеша по плагину третьей версии).
[+] Добавлен вариант скрипта с cookie-переключателем для
отключения/включения на странице флеша.
[~] Незначительные исправления.
v.1.01
[~] Подправил очепятку-- вместо if ((ie==0)&&(document.plugins))
нужно писАть if ((ie==0)&&(n.plugins)), т.к. в первозданном
виде в 3.х браузерах выводило картинку даже если они
поддерживают флеш (заметил и исправил на QNX в тамошнем
Voyager 3).
v. 1.0
First stable version ;D)
######################################################
Результаты тестирования скрипта проверки
поддерживаемой браузером версии флеша
######################################################
РАБОТАЕТ КАК НАДО В:
-- MSIE 3.x, 5.0, 5.5, 6.0 win32
-- Netscape 3-7.x win32
-- Mozilla 1.x win32/Linux
-- Opera 2.x-7.x win32, Opera 7.0 Linux
-- 1x Net Browser 1.0 win32
-- Lynx 2.8.x ;) пишет красивое слово "image" там, где надо на win32
и название картинки под Linux'ом ;)
-- Konqueror 3 Linux
-- Galeon 1.2.5 Linux
-- AMSD Ariadna 1.3 win32
-- QNX Voyager 2.03b
-- I-View 2.38 win32
-- Arachne 1.7 DOS :)
-- Amaya 7.2 win32 :)
ГЛЮЧИТ В (все нижеперечисленные браузеры под win32):
1. MSIE 4.0 — работает, однако из-за глюков браузера через раз :)
2. Большинстве старых не-JavaScript браузеров:
- MSIE 1.x-2.x
- Netscape 1.x
- Mosaic (all)
- Chello 1.0 (1994 года выпуска)
и мн. др.
(отображает содержимое тэгов "<script>"-- можно добавить тэги
комментария:
<script>
<!--
а тут скрипты
//-->
</script>
но при этом, если сам ролик/картинка вставляется в ячейку
таблицы равную ему/ей по размеру-- в Нетскейпах и Операх
будет ломаться таблица)
3. Netscape 2
такое описать невозможно-- бесподобно ;)
4. Hotjava 3.0
вообще ничего не выводится
на главную