PDA

Просмотр полной версии : инсталяция flash player + iobject


inMashine
15.11.2007, 18:38
Здравствуйте.
Для вставки flash контента в html страницу я использую iobject.js:

function showFlash(o){
var bg,q,s,v;
if(o.bgcolor){bg=o.bgcolor;}else{bg="#FFFFFF";}
if(o.quality){q=o.quality;}else{q="high";}
if(o.scale){s=o.scale;}else{s="noscale";}
if(o.ver){v=o.ver;}else{v=6;}
var str='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version='+v+',0,0,0" ';
str+='id="'+o.id+'" ';
if(o.base){str+='base="'+o.base+'" ';}
if(o.align){str+='align="'+o.align+'" ';}
str+='width="'+o.width+'" height="'+o.height+'"><param name="movie" value="'+o.name+'"/><param name="bgcolor" value="'+bg+'"/><param name="quality" value="'+q+'"/>';
if(o.flashvars){str+='<param name="flashvars" value="'+o.flashvars+'"/>';}
if(o.allowScriptAccess){str+='<param name="allowScriptAccess" value="'+o.allowScriptAccess+'"/>';}
if(o.salign){str+='<param name="salign" value="'+o.salign+'"/>';}
if(o.wmode){str+='<param name="wmode" value="'+o.wmode+'"/>';}
str+='<param name="scale" value="'+s+'"/><embed type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" id="'+o.id+'-embed" src="'+o.name+'" bgcolor="'+bg+'" ';
if(o.flashvars){str+='flashvars="'+o.flashvars+'" ';}
if(o.swLiveConnect){str+='swLiveConnect="'+o.swLiveConnect+'" ';}
if(o.allowScriptAccess){str+='allowScriptAccess="'+o.allowScriptAccess+'" ';}
str+='quality="'+q+'" ';
if(o.base){str+='base="'+o.base+'" ';}
if(o.wmode){str+='base="'+o.wmode+'" ';}
if(o.salign){str+='salign="'+o.salign+'" ';}
str+='scale="'+s+'" width="'+o.width+'" height="'+o.height+'"></embed></object>';
document.writeln(str);
}




Далее все это дело не хитро вставляется в html:

<html>

<head>
<title></title>
<META HTTP-EQUIV="Content-Type" content="text/html; charset=UTF-8">
<SCRIPT language="JavaScript" type="text/javascript" src="iobject.js"></SCRIPT>
</head>
<body>

<div align="center">
<SCRIPT language="JavaScript" type="text/javascript">
/*
Описание аттрибутов:
Автоматические:
align - HTML выравнивание (необязательный)
allowScriptAccess - взаимодействие между flash и html. Значения: never | always | sameDomain (необязательный, по умолчанию sameDomain) Flash Player 7 и выше
bgcolor - цвет фона флеша (необязательный, по умолчанию белый)
height - высота флеша
id - id object (необязательный)
name - имя файла
quality - качество (необязательный, по умолчанию high)
salign - Stage.align (необязательный)
scale - маштаб (необязательный)
swLiveConnect - загрузка JAVA при первичной загрузке Flash Player (необязательный, по умолчанию false) только для embed
width - ширина флеша
Пользовательские:
base - цвет фона флеша (необязательный)
flashvars - передаваемые флешу переменные (необязательный)
ver - минимальная версия флеш-плеера (необязательный, по умолчанию 6)
*/
var o = {};
//// Автоматические
//o.align = "top";
//o.allowScriptAccess = "sameDomain";
//o.bgcolor = "#191970";
o.height = "240";
o.id = "id ";
o.name = "intro.swf";
//o.quality = "качество";
//o.salign = "top";
//o.swLiveConnect = "true";
o.width = "843";
//// Пользовательские
//o.base = "";
//o.flashvars = "";
//o.ver = "";

//// Показываем флешку
showFlash (o);
</SCRIPT>
</div>
</body>

</html>


Должен сказать что все работает просто великолепно и в IE и в FF,
но только при условии, что flash player установлен на компьютере клиента (речь о IE).
Если перед тегом <script> вставлять div с предложением установить flash player (примерно как с swfobject'oм), то этот div вылазит даже если у клиента есть flash player.
Подскажите плз, как предложить установку flash player' а клиенту (используя код, приведенный выше)

Poohorik
15.11.2007, 19:16
Попробуй SWFobject.
http://blog.deconcept.com/swfobject/

Если flash player есть - информация в div'е стирается, показывается flash. В div кинуть текст о том, что не установлен flash и ссылку на adobe например.

iNils
15.11.2007, 19:29
iobject не поддерживает определение версий и вряд ли будет, так как тестировать на всех видах браузерах и их новых версий, у меня нет времени. Поэтому использовать его стоит, только если не расчитываете на 100% охват и ваш проект на так уж маштабен.
У вас кстати старая версия iobject с багом.
Вместо
if(o.wmode){str+='base="'+o.wmode+'" ';}
Должно быть
if(o.wmode){str+='wmode="'+o.wmode+'" ';}

inMashine
15.11.2007, 19:31
Я как-то мучился недели две со вставкой flash контента в html и iobject - самый лучший вариант на мой взгляд. Даже непомню чем мне не понравился swfobject...(с размерами при разных разрешениях монитора вроде были проблемы или с русским текстом).
Честно говоря неохота к этой проблеме возвращаться.
Если кто-то хорошо понимает js напишите плз чё в этом iobject надо поменять, чтобы инсталировать flash player (или может скриптик js, который определяет наличие плеера)
Ну а если нет - то конечно придется мурыжить swfobject.

iNils
15.11.2007, 19:35
Тем кто за это возьмется (если есть желающие). iobject.js трогать не надо, достаточно не вызывать showFlash (o) при отсутствии нужной версии.

inMashine
15.11.2007, 19:35
iNils, пасибо.
Я как раз только что исправил версию iobject.
Буду использовать swfobject.

inMashine
15.11.2007, 20:23
C swfObject все в поряде.
Но вот вопрос на другом компе установлен flash plaeyr (вчера скачали)
При этом FF выкидывает сообщение "you need to install flash player" - при переходе по ссылке http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash
и попытке его установить ничего не выходит.
А IE все отображает нормально, зато не пишет надписей на флешовых кнопках.

LinuxVideo
15.11.2007, 20:35
А что, embed уже не модно?
Браузер сам скажет, чего ему надо, быть может даже сам скачает...
Зато как весело эти скрипты работают под линуховым Конкьюрером... Руки бы отрывал...

iNils
15.11.2007, 20:43
embed модно только внутри js

inMashine
15.11.2007, 20:55
Только что установил себе flash player по ссылке http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash
(там справа есть маленькая картинка "get shoсkwave player")
Но IE упорно пишет "You need the Flash Player" (это то что я написал в div'е swfobject'a).
Подскажите плз в чем тут дело.

LinuxVideo
15.11.2007, 21:00
> embed модно только внутри js

Почему? Вырезание гланд через ....? Тоже модно?

inMashine
15.11.2007, 21:08
А есть какая нибудь разница между flash player и shockwave player?

iNils
15.11.2007, 21:08
Почему? Вырезание гланд через ....? Тоже модно?Большенство пользователей сидит под IE, поэтому они сталкиваются с проблемой активаций флешки кликом. Избежать этого можно выводя флеш с помощью js.

LinuxVideo
15.11.2007, 21:11
> А есть какая нибудь разница между flash player и shockwave player?

Да. Для Flash и Director.


> сидит под IE, поэтому они сталкиваются с проблемой активаций флешки кликом

Чего только виндузятники не придумают...

iNils
15.11.2007, 21:17
> сидит под IE, поэтому они сталкиваются с проблемой активаций флешки кликом

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

LinuxVideo
15.11.2007, 21:57
Ну, скандал с Еолас я помню (правда дальше начались пересуды и я бросил следить). Ну и не в курсе, чем дело кончилос. Вот только почему во всех Linux-браузерах никакого шаманства не надо? А шаманство как обычно с изделиями мелкомягких?

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

iNils
16.11.2007, 09:15
Продолжаете воздух сотрясать?
Как "Зато как весело эти скрипты работают под линуховым Конкьюрером", так разработчки скриптов виноваты, а когда можно вставлят ActiveX через JS, так сразу баг?
А на самом деле, патч для IE ВСЕГО ЛИШЬ выводит диалоговое окно для актвизации активного содержимого. И о том, что это можно обойти через JS, было известно еще 4 года назад, то есть за 2,5 года до выхода патча. Но ведь вам лень в этом разбираться, лучше обольете грязью.
Поэтому заканчивайте свои холивары, есть что по делу сказать - скажите, иначе не разводите здесь флейм.

Poohorik
16.11.2007, 20:41
inMashine, ты уверен что правельно указал параметры к swfobject?

var so = new SWFObject("flash.swf", "My Flash", "500", "500", "9", "#000000");

9 - версия flash.

CrazyFlasher
19.11.2007, 13:27
это правда что в апреле 2008 "click to activate..." уберут и всё будет как раньше?

iNils
19.11.2007, 14:14
Даже если уберут, то js все равно будут использовать, хотя меньше.
1. Так удобнее задавать параметры, а не бегать искать в param и embed.
2. Загрузка требуемых версий плеера.
3. А SWFaddress пока намертво пришит к SWFobject.