определение js-скриптом версии флеш ролика

clevel

Новичок
определение js-скриптом версии флеш ролика

В своей цмс надо предусмотреть вставку флеш-ролика по аналогии со вставкой картинки. Если с картинкой все понятно (img src=), то с флешем, как я понял, надо определить версию ролика (например, <OBJECT CLASSID='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' CODEBASE='http://active.macromedia.com/flash5/cabs/swflash.cab#version=5,0,0,0'>). Какими стандартными средствами это можно сделать?
Спасибо...
 

Krisha

pain in the neck
clevel
Имхо, тебе это не нужно, ставь всегда:

<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"

должны работать и 4 и 5 и 6 swf'ы, по-поводу MX 2004, к сожалению, не в курсе.
 

clevel

Новичок
Krisha, это понятно, можно сразу максимальную версию установить...
Но хочется, как всегда, минимизировать затраты, так сказать...
Мне-то все равно, если у юзера стоит пятый ослик, где плагин 5-ой флешки установлен, и ролик - пятая флешка, то не логичным просить юзера загрузить последний плагин флеш-плеера....
 

гоша

Guest
версия самого ролика находится в четвертом байте swf файла.
код вставки оформляй яваскриптом (гугель на тему "detect flash plugin").
 

clevel

Новичок
>код вставки оформляй яваскриптом (гугель на тему "detect flash plugin").
google всякую чушь по этому запросу выдает....
А как средствами js четвертый байт прочитать?
 

clevel

Новичок
>цмс на яваскрипте пишется?
php+js+javascript+xml
визуальные редакторы - эмулятор Ворда и Экселя - плюс .hta
поэтому и надо js определять...
 

Krisha

pain in the neck
Автор оригинала: clevel не логичным просить юзера загрузить последний плагин флеш-плеера....
Хм, ну если в системе предполагается, что будут swf'ы и 6 версии, то не логичнее ли сразу попросить юзера обновить плугин, чтобы в дальнейшем он комфортно смог работать ?
 

camka

не самка
Вот примерчик на PHP.

PHP:
if($fp=fopen($filename_new,"rb"))
{
         $FWS=fread($fp,3);//must be 'FWS'(not compressed) or 'CWS'(compressed - in 6,7 versions)
         $VER=ord(fread($fp,1));//flash version
         fclose($fp);
........
 

Krisha

pain in the neck
clevel
Я ниоткуда её не брал, я для примера сказал.

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

Мне не понятно, зачем тебе определять версию флеша, если, к примеру, будет юзер, у которого вообще нету поддержки флеша (что можно приравнять к наличию более старого плугина) ?? Что тебе это даст ? Ну определил ты, что у тебя 5 версия, а у юзера 4 плугин. Он же всё равно будет апдейтится.
 

clevel

Новичок
Стоп!
Мне надо определить версию не для юзеров, сидящих в моей цмс, а для того, чтобы правильно вставить объект-флеш ролик на страницу и это корректно отображалось для всех посетителей сайта!
Вот тут-то и важно, какая именно версия файла!
 

Krisha

pain in the neck
clevel
Ты хочешь сказать, что плугин от 6 некорректно будет работать с версиями 4 и 5 ? :)
 

clevel

Новичок
Krisha, млин, с третьего раза не доходит?
Можно всегда вставлять инфу, чтобы скачали последний плагин, но надо, чтобы вставлялась инфа именно по конкретному флеш-ролику: версия, релиз!
Если я вставил на странице два флеш-ролика, сохраненных под 5-ый плагин, то не надо просить юзера, зашедшего на эту страницу с предустановленным пятым флеш-плеером обновить его до 7-го... Так понятнее?
Конечно, если у него нет плеера вообще, или версия ниже, чем у флешки, то тут все ясно, надо обновляться....

camka, помимо версии есть еще номер релиза. Где ты всязл инфу о номере версии файла и как вытащить еще номер релиза?
 

Alien

Новичок
Автор оригинала: clevel
надо, чтобы вставлялась инфа именно по конкретному флеш-ролику: версия, релиз!
Немного залез в доку

http://download.macromedia.com/pub/flash/flash_file_format_specification.pdf

The header begins with a three-byte Signature of either 0x46, 0x57, 0x53 (“FWS”) or 0x46, 0x57, 0x43 (“CWS”). An FWS signature indicates an uncompressed SWF file; CWS indicates that the entire file after the first 8 bytes (that is, after the FileLength field) has been compressed using the open standard ZLIB. The data format used by the ZLIB library is described by Request for Comments (RFCs) documents 1950 to 1952. CWS file compression is only permitted in SWF version 6 or later.

A one-byte Version number follows the signature. The version number is not an ASCII character, but an 8-bit number. For example, for SWF 4 the version byte is 0x04, not the ASCII character ‘4’ (0x35).
Релиз версии там тоже не прошит.
То есть все что можно узнать - это 5-ка или 6-а.

Немного поэкспериментировал:
http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0
редиректит на
http://fpdownload.macromedia.com/get/shockwave/cabs/flash/swflash.cab#version=6,0,29,0
но отдает то он
http://fpdownload.macromedia.com/get/shockwave/cabs/flash/swflash.cab
[!]
файло одно, чего ты к нему припишешь - не важно,
хоть
http://fpdownload.macromedia.com/get/shockwave/cabs/flash/swflash.cab#version=77,99,0,98

В общем, у меня есть большое подозрение что флешка сделанная в версии X.9.9.9
будет смотрется плагином X.1.1.1, но это нужно у флешевиков узнать :)
 

гоша

Guest
flash authoring environment и flash player -- это, вообще-то говоря, разные программы.

и версии у них разные и независимые (кроме первой цифры, она же версия байткода).

так что "подозрение" правильное.
 

clevel

Новичок
Спасибо всем, вижу, что выход пока один:
1.из js скрипту дергать пхп файл с параметром - id флеш-файла, версию влеш-плеера для которого надо узнать
2.пхп файл читает 4-ый байт, узнает версию, и отдает это js
3.js вставляет объект на страницу с указанием полученной версии
 

Alien

Новичок
В базу занеси поле "номер версии".
Поле заполняй когда новая флешка занесена.
Всё. Зачем постоянно дергать 4-ый байт? (или я тебя не понял? :D )
 

clevel

Новичок
Alien
спасибо, это уже вопрос оптимизации... я просто изложил саму идею "для потомков"...
 
Сверху