Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: HTML-шаблон некэшируемого флеша
Flash Zone Forum > Macromedia Flash > ActionScript
chingachgoog
Решил создать простецкий шаблончик некэшируемого флеша. Вот что вышло:

Цитата
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

<title>Некэшируемый флеш</title>

</head>

<body bgcolor="#000000">

<object
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
width="100%"
height="100%"
id="mySWF"
align="middle">

<param name="movie" value="" />
<param name="scale" value="noscale" />
<param name="bgcolor" value="#ffffff" />

</object>

<script>
<!--
mySWF.movie="Название_ролика.swf?"+new Date()

//-->
</script>

</body>
</html>


Т.е. ИЗНАЧАЛЬНО я создаю объект с пустым параметром movie, а потом через JS этот параметр дозаполняю.
Но объект - это только для IE. В других браузерах надо использовать embed. И тут у меня возник затык sad.gif


Цитата
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

<title>Некэшируемый флеш</title>

</head>

<body bgcolor="#000000">

<object
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
width="100%"
height="100%"
id="mySWF"
align="middle">

<param name="movie" value="" />
<param name="scale" value="noscale" />
<param name="bgcolor" value="#ffffff" />

<embed
src=""
scale="noscale"
bgcolor="#ffffff"
width="100%"
height="100%"
name="mySWF"
align="middle"
type="application/x-shockwave-flash" />

</object>

<script>
<!--
mySWF.movie="Название_ролика.swf?"+new Date()

//-->
</script>

</body>
</html>


Не понимаю, как обратиться динамически к эмбеду, чтобы ДОПИСАТЬ в него src?
HaWK
А воспользоваться скриптом php?
Код
<?
$mySWF = "Название_ролика.swf?" . date();
?>
<embed
src="<? echo $mySWF; ?>"
scale="noscale"
bgcolor="#ffffff"
width="100%"
height="100%"
name="mySWF"
align="middle"
type="application/x-shockwave-flash" />


Или даже так:
Код
<?
$mySWF = "Название_ролика.swf?" . date();
?>
<embed
src="<? echo '<script type=text/javascript>mySWF.movie="Название_ролика.swf?"+new Date();</script>'; ?>"
scale="noscale"
bgcolor="#ffffff"
width="100%"
height="100%"
name="mySWF"
align="middle"
type="application/x-shockwave-flash" />

Хотя второй вариант по-моему не сработает, но попробовать стоит.
chingachgoog
Хочется обойтись клиентским скриптом, а не серверным.
Шаблон должен быть минимальным и понятным.
chingachgoog
В общем я решил пойти несколько другим путем:


Код
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

<title>Некэшируемый флеш</title>

</head>

<body bgcolor="#000000">

    &lt;script>
    <!--
        var isIE=false
    //-->
    </script>

    <!--[if IE]>
    &lt;script>
    <!--    
        isIE=true;
    //-->
    </script>
    <![endif]-->

    &lt;script>
    <!--    
        // Создаем и внедряем в тело объект
        var node=document.createElement('object');
        document.body.appendChild(node);
        var name="Название_ролика.swf?"+new Date()
        
        if ( isIE) {
            node.classid= "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
            node.movie=name
            node.id="mySWF"            
        } else {
            node.name="mySWF"
            node.data=name
            node.type="application/x-shockwave-flash"
        }

        node.width="100%"
        node.height="100%"
        node.scale="noscale"
        node.align="middle"                        
    //-->
    </script>
</body>
</html>


Собственно должно работать в любом браузере.
Только надо помнить - это код именно для отладки, когда кэш не приемлем.

add:

Почему-то свойство bgcolor назначается только в IE, в остальных браузерах выставляется по умолчанию в белый цвет, что собственно меня не напрягает.
tiHo
Цитата
Почему-то свойство bgcolor назначается только в IE, в остальных браузерах выставляется по умолчанию в белый цвет, что собственно меня не напрягает.


У меня в 4-х браузерах адекватно работает.
chingachgoog
Цитата(tiHo @ 24.09.2010 - 00:48) *
У меня в 4-х браузерах адекватно работает.


У меня этот код
Код
node.bgcolor="#0000ff"

работал только в IE, а в остальных фон ФП оставался белым.
tiHo
А все, я просто не правильно понял.

А так не пробывал: document.all("node").bgcolor=....... ?
chingachgoog
Цитата(tiHo @ 25.09.2010 - 01:05) *
А так не пробывал: document.all("node").bgcolor=....... ?


Так вообще нигде не работает, видимо синтаксическая ошибка. Но вообще, как только не пробывал...
tiHo
 ну может скобки квадратные smile.gif  если и так не прокатит - то я умываю руки...
chingachgoog
Пока не забыл.

Вообщем дело с альтернативными браузерами в том, что у них есть только АТТРИБУТЫ свойств флеш-контрола, а самих СВОЙСТВ у них нет (вот и привет от ИЕ). Поэтому задать нужные параметры можно ТОЛЬКО через аттрибуты. Ну хоть так объектная модель все равно сохраняется, хоть и криво:

node.setAttribute('bgcolor', "#0000ff")

(эта байда записывается в свойство outerHTML и все, блин, других нативных свойств НЕТ! Ужос...)
MustLive
chingachgoog

По большому счёту дело не в альтернативных браузерах, а в флеш-плеере (плагине) для них. И соответственно в технологии для его создания (ActiveX для IE и плагины для других), что влияет на возможности флеш плагина. Так что всё зависит от Адоба - с учётом ограничений технологии для создания плагина. Раз Адоб позволяет только через атрибуты, значит будет только так (пока Адоб не изменит ситуацию).

Заметь, что "альтернативными" эти браузеры называются только для ОС Windows, а для альтернативных ОС они уже такими не являются smile.gif. Под Mac OS уже IE "альтернативный", а под Linux/Unix системы вообще нет IE.
chingachgoog
Цитата(MustLive @ 16.05.2012 - 01:20) *
По большому счёту дело не в альтернативных браузерах, а в флеш-плеере (плагине) для них.


Вряд ли плагины НАСТОЛЬКО разные. Насколько я понимаю, дело именно в ИЕ - он хитрым образом старается уравнять аттрибуты узла и свойства объекта. Т.е. тупой адобовский плагин скорее всего не создает свойств для своего контрола (а должен бы учитывая объектную модель), но ИЕ конвертирует аттрибуты в свойства и дальше с контролом в ИЕ можно обращаться как с настоящим объектом - через свойства.

Это удобная фича. И безопасная (в отличии от обратного конвертирования свойств в аттрибуты)
MustLive
Технологии разные - ActiveX и модель расширений браузеров Netscape. Все альтернативные браузеры используют именно модель Netscape для плагинов, поэтому Адоб выпускает только один плагин для всех браузеров и отдельно ActiveX-компонент для IE. Microsoft таким образом решила выделиться (и поконкурировать с Netscape, создав свою технологию расширений браузера), а в последние годы решила таким образом выделиться Гугл, для браузера которой выпускается своя версия плагина - "флеш-плагин для Chrome".

Т.е. дело может быть именно в технологии ActiveX, что именно в этой версии Адоб сделала этот функционал, чего нет в Netscape-версии плагина. Хотя вариант, что это сам IE конвертирует атрибуты в свойства не исключён. Ты можешь проверить эту идею на других плагинах (ActiveX-компонентах для IE и плагинах для других браузеров), таких как Shockwave Director, QuickTime и RealPlayer.
Русская версия IP.Board © 2001-2013 IPS, Inc.