Просмотр полной версии : Тестирование альтернативного содержимого в html (когда нет флеш-плейера)
Вопрос не совсем по флешу. Скорее по настройкам IE (если таковые имеются). Задала альтернативное содержимое в теге object, отвечающего за показ флеш-меню в html (иначе, если у пользователя нет флеш он бедный останется у меня без навигации).
Как можно протестировать этот самый альтернативный режим не прибегая к деинсталляции флеш-плейера у себя на компе - данную меру считаю слишком зверской. Уверена, что в можно покопаться в настройках IE и как-то отключить воспроизведение флешек.
через яву можно заценить версию плеера, если ее нет то навигировать явой...
вот щаз посмотрел как это можно сделать:
file->publish settings
ставим галку html
переходим на вкладку html
и там ставим галку detect flash version
потом жмем на publish внизу
и изучаем полученные html файлы
Кажется, меня немного не поняли. Вроде с тем, как задать альтернативный режим, я разобралась сама.
Не имею понятия как ПРОТЕСТИТЬ этот режим без сноса плейера (очень не хоца того делать). Помню, в опере флешки как-то отключались. Но беда в том, что в данным момент дистриба для оперы у меня нет. Возможно ли как-то отключить флешки в ie?
через яву можно заценить версию плеера, если ее нет то навигировать явой...
Кстати, если не сложно, можно пример кода на яве или лучше пхп?
http://blog.deconcept.com/swfobject/
этим пользуются все,
далее "задираешь планку", то есть требуешь 10 плеер, у тебя его нету, значит будет показан альтернативный контент.
хм... а можно как-то выдрать переменную из php и передать ее жаваскрипту? Извиняюсь, если где-то ступила, если что.
Конечно можно. php стоит на серваке, что хочет то и выдает в броузер.
какой-то глюк с этим swfobject выводится относительно размера экрана не с позиции 0,0, а примерно с поизии 5,5 (это если на глаз). А меня так не устраивает - дизайн весь расплывается - сверху и слева от моей флешки теперь белое пустое пространство. Кстати, кто-нибудь может рассказать как включение флеш взаимодествует с тегами div с установленными Z-индексами? Все никак с ними поладить не могу - хоть что делай, а флешка всегда вперед вылазит.
в head:
<script type="text/javascript" src="js/swfobject.js"></script>
<style type="text/css">
#flashcontent {
width: 300px;
height: 300px;
}
</style>
в body: <div id="flashcontent" >
[ flash goes here ]
</div>
<script type="text/javascript">
// <![CDATA[
var so = new SWFObject("swf/3d2.swf", "sq", "300", "300", "6", "#D4D4D4");
so.write("flashcontent");
// ]]>
</script>это со старого сайта - все нормально.
еще у меня стоит <BODY bgcolor="#D4D4D4" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">но это тоже лучше задавать через style.
Про z-index: so.addParam("wmode", "window" ); или "opaque" или "transparent" (последние не советую) и все заработает. Посмотрите на форуме про wmode
Спасибо большое. Теперь вот парюсь с передачей параметров в флешку из пхп. Отправляю с помощью addVariable переменную xml, только не знаю, как ее во флеш выдрать теперь.
Юзаю такой код:
<? $xml = $APPLICATION->GetMenuHtmlEx("top")?>
<script type="text/javascript" src="/bitrix/templates/tnadzor/swfobject.js"></script>
<script type="text/javascript">
var so = new SWFObject("/bitrix/templates/tnadzor/header.swf", "mymovie", "1019", "199", "7", "#003300");
so.addVariable("xml", <? echo $xml;?>);
so.write("flashcontent");
</script>
XML в html-коде не передают. Нужно использовать внешний xml-файл.
Спасибо большое. Теперь вот парюсь с передачей параметров в флешку из пхп. Отправляю с помощью addVariable переменную xml, только не знаю, как ее во флеш выдрать теперь.
пересылай path_to_xml, во флеше он появится на основном таймлайне.
Ну то есть _root.path_to_xml будет содержать то что ты отправишь.
Далее класс XML флеша, load(), onLoad() и прочее.
хм... слабо себе представляю. Страница, с которой подгружается меню - шаблон для всех страниц сайта. Текст меню высчитывается динамически отдельно для каждой странице и заранее предугадать, где будет храниться файл с текстом меню - нереально. Обмозговав ситуацию, пришла к выводу, что удобнее всего передать xml-текст, а потом на основе его сгенерировать меню. Раньше (при использовании <object>) такой вариант работал стабильно. Неужели нельзя передать параметр через swfobject минуя создание доп.файлов? Не верю)))
А теги фильтровать кто будет? XML всегда внешний файл.
Есть ли возможность передать флешке через swfobject массив каких-либо значений?
Есть, но не передают через flashvars большие объемы данных!
Я, наверно, совсем даунито и никогда с этом чертовым меню от вас не отстану... Хоть потом диссертацию по нему пиши "психология новичка или почему все новички задают одинаковые вопросы и нихрена понять не могут")))
Странное дело. Сейчас тестирую загрузку xml из файла и получается следующее:
Текст загружаемого файла:
<menu>
<item name="О журнале" link="/about/index.php" active = "false"/>
<item name="Публикации" link="/publications/index.php" active = "false"/>
<item name="Подписка" link="/subscribe/index.php" active = "false"/>
<item name="Рекламодателям" link="/sign/index.php" active = "false"/>
</menu>
(пока юзаю обыкновенный статический xml, но в принципе уже готов php, выдающий то же самое, только получая актуальные данные о пунктах меню)
Загрузка данных во флеше (фрагмент):
menu_xml = new XML();
menu_xml.ignoreWhite = true;
menu_xml.onLoad = function(ok) {
if (ok) {
F_createMenu();
}
};
menu_xml.load(_root.path);
F_createMenu = function () {
my_fmt1 = new TextFormat();
my_fmt1.bold = true;
my_fmt1.size = 12;
my_fmt1.font = "Arial";
my_fmt1.color = "0xFF0000";
createTextField("t1", b.getNextHighestDepth(), 0, 0, 200, 20);
with (t1)
{
text = menu_xml.toString();
multiline = false;
autoSize = true;
wordWrap = false;
setTextFormat(my_fmt1);
}
//...дальше пока неважно
}
Как видно, в TextFormat пихаю содержимое созданного xml.
И что же выдает мне этот самый TextFormat:
<menu />
И просто медленно сползаю под стол...
И куда делись все узлы xml? Кто-нибудь подскажет?
Есть ли возможность передать флешке через swfobject массив каких-либо значений?
Есть, но не передают через flashvars большие объемы данных!
Ладно. Поверю вам, что нужно юзать xml. Но расскажите все равно про массивы - на будущее.
Ну и еще - мне кажется, менюшка не такой уж и большой объем данных - это ж не таблица из базы с 1000 записями.
XML должен быть в кодировке UTF-8
Опять я!
Добавила строку о кодировке. Теперь со статическим файлом все работает отлично (спасибо iNils). Однако, подрубив динамический пхп-файл, опять получаю ту же проблему.
Пхп генерит следующее:
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
- <menu>
<item itemname="О журнале" link="/about/index.php" active="false" />
<item itemname="Публикации" link="/publications/index.php" active="false" />
<item itemname="Подписка" link="/subscribe/index.php" active="false" />
<item itemname="Рекламодателям" link="/sign/index.php" active="false" />
</menu>
На выходе получаю:
<?xml version="1.0" encoding="utf-8"?><menu />
Блин, теперь не только я под стол сползаю, но и потолок туда же. Но не отстану, пока своего не получу)).
ПС: Истина где-то рядом, я это чувствую...
Строка о кодировке не нужна. Нужен сам файл (символы) в данной кодировке. Php не поддерживает utf-8 напрямую, надо перекодировать с помощью iconv (http://flasher.ru/forum/search.php?do=process&q=iconv)
Строка о кодировке не нужна.
Нужна-нужна.
Нужна-нужна.
Может и комуто и нужна, а флеш съест файл не только без encoding="utf-8", но и вообще без <?xml version="1.0" encoding="utf-8"?>.
Понятно, что съест. Но заголовок полагается.
Yo!
Сначала напоролась на Call to undefined function: iconv()... блаблабла...
Искала по форумам - короче там было слабо понятно, что делать.
В итоге понятный ответ нашла на:
http://oscommerce.su/modules/smartfaq/print.php?faqid=1
(это для будущих поколений таких как я, чтоб, если уж найдут темы - так чтобы не мучились))))
только вот - теперь белибарда какая-то вместо русского. Блин. Коряво как-то осознавать себя одним из многих, напоровшихся на эту белиберду. Вообще, судя по форумам - я прохожу вполне себе стандартный путь. Небось, вы все тож через него прошли. Ладно. Думаю дальше.
не надо ничего перекодировать. В блокноте сохрани xml как utf-8 и все дела. Если вдруг нет блокнота (шутка), можно сказать System.useCodepage = true; но как сказано в хелпе If you set System.useCodepage to true, remember that the traditional code page of the operating system running the player must include the characters used in your external text file in order for the text to display. For example, if you load an external text file that contains Chinese characters, those characters cannot display on a system that uses the CP1252 code page because that code page does not include Chinese characters.
то есть так джедаи не поступают.
вот этого<?xml version="1.0" encoding="utf-8"?> тоже не надо, зачем мусор слать?
Это по вашему мусор?? Это обязательное объявление типа документа XML! И неважно, что флеш не парсит этот заголовок! И вовсе не факт, что только флеш будет читать невалидный XML.
ну давайте тогда и <!DOCTYPE > посылать.
Это было бы, конечно, идеально.
В блокноте сохранить не могу - фича как раз в том, чтобы генерить xml динамически для каждой страницы сайта. А вообще, всем большое спасибо. У меня заработало.
Единственное - разбираюсь теперь как в мой xml в зависимости от пути до страницы записать инфо об активном пункте. Движок, с которым я работаю имеет алгоритмы вычисления активного пункта (не только ссылка, указанная в меню, но и все файлы и подкаталоги из этой папки должны быть подсвечены в меню как активные) - надо только найти, где они эти алгоритмы спрятали)))
Кстати, насчет валидности. Вот этого if (ok) {
F_createMenu();
} мало, нужно еще проверить status
if (!ok ){
// файл не найден
}else if(this.status < 0){
// невалидный xml
}else{
// все нормально
F_createMenu();
}
Потому что при ошибке 404 вполне может оказаться ok == true
Понятно, что съест. Но заголовок полагается.Не занудствуй. Можешь ставить, можешь нет, на работоспособности флеша это не отразится, а обсуждаем мы именно это.
Не занудствуй. Можешь ставить, можешь нет, на работоспособности флеша это не отразится, а обсуждаем мы именно это.
)))))
Думаю, я вас поняла, господа профессионалы...
iNils, ну нельзя действовать по принципу «если и так работает, то пусть так и останется». Даже браузер может просто не определить кодировку документа, если ему не подсказать.
taifa, разницу между XML и HTML ощущаете, нет? И между <!DOCTYPE и <?xml, а?
taifa, разницу между XML и HTML ощущаете, нет? И между <!DOCTYPE и <?xml, а?
Ну вы прямо как мой бывший начальник. Кстати, именно из-за этого человека я и уволилась с предыдущей работы)))... И счастлива)))
iNils, ну нельзя действовать по принципу «если и так работает, то пусть так и останется». Даже браузер может просто не определить кодировку документа, если ему не подсказать.
И часто ты в xml декларацию типа документа (<!DOCTYPE...) пишешь?
DOCTYPE нет, но вы хотите ещё и <?xml сократить, просто потому что «работает и так». Много чего поначалу работает «и так». А потом не работает.
Кроме того, перед моим предыдущем постом была ссылка на тему DOCTYPE в HTML, типа объявлять или нет.
XML != HTML, <?xml != DOCTYPE, не нужно смешивать. В XML всё жестко и ясно описано, что должно быть, а чего не должно быть.
Кроме того, перед моим предыдущем постом была ссылка на тему DOCTYPE в HTML, типа объявлять или нет.
XML != HTML, <?xml != DOCTYPE, не нужно смешивать. В XML всё жестко и ясно описано, что должно быть, а чего не должно быть.
http://www.w3.org/TR/2000/REC-xml-20001006#NT-doctypedecl
Ну и? Помимо <?xml с вас ещё потребуют DOCTYPE. А не писать ни то, ни другое ещё хуже, чем написать хотя бы что-то одно.
Ну и? Помимо <?xml с вас ещё потребуют DOCTYPE. А не писать ни то, ни другое ещё хуже, чем написать хотя бы что-то одно.Вот я и спрашиваю, ты описываешь декларацию документа? Если да, то молодец и вопрос закрыт, если нет, то вопрос об использовании декларации документа <?xml...> просто придирка (я говорю только об исключительном использование для флеша). Сама макромедия, в некоторых xml не указывает <?xml...>
О валидности:
Невалидный (http://validator.w3.org/check?uri=http%3A%2F%2Fwww.inils.ru%2Ftest.xml&charset=%28detect+automatically%29&doctype=Inline&ss=1)
Валидный (http://validator.w3.org/check?uri=http%3A%2F%2Fwww.inils.ru%2Ftest_cur.xml&charset=%28detect+automatically%29&doctype=Inline&ss=1)
О валидности:
Невалидный (http://validator.w3.org/check?uri=http%3A%2F%2Fwww.inils.ru%2Ftest.xml&charset=%28detect+automatically%29&doctype=Inline&ss=1)
Такой xml флеш не съест, потому что там амперстанд присутствует и просит CDATA.
http://www.adobe.com/crossdomain.xml
Этот тоже невалидный.
Такой xml флеш не съест, потому что там амперстанд присутствует и просит CDATA.Я бы сначала проверил на твоем месте, прежде чем это утверждать.
Я не объявляю DOCTYPE, но категорически против удаления заголовка, который информирует о кодировке документа. Представь себе ситуацию, что тебе придется грузить какой-либо XML, а кодировка его неизвестна и не указана. Что будешь делать? Или, к примеру, дашь какому-нибудь товарищу, незнакомому с flash, отредактировать подобный XML. Не глядя он сохранит его в win1251.
Я не объявляю DOCTYPE, но категорически против удаления заголовка, который информирует о кодировке документа. Представь себе ситуацию, что тебе придется грузить какой-либо XML, а кодировка его неизвестна и не указана. Что будешь делать? Или, к примеру, дашь какому-нибудь товарищу, незнакомому с flash, отредактировать подобный XML. Не глядя он сохранит его в win1251.Я не очень понял при чем тут кодировка, нам нужна кодировка файла, мы же не в браузере открываем. Кроме того, если ты смотрел ссылку с валидатором на пример с корректным файлом, то там encoding вообще не указан, но валидатор на это ругаться не стал.
мы же не в браузере открываем.
Тоже не факт. Автоопределение тоже не всегда корректно работает. Просто нужно заранее и наперед подразумевать, что XML может работать не только во Flash.
В общем, если мне не дай бог придёться работать с человеком, который принебрегает данным заголовком, я его заставлю его дописать во все XML-файлы, что есть.
Я бы сначала проверил на твоем месте, прежде чем это утверждать.
Интересные дела..
Кушает даже такого вида:
<& &="&">&</&>
но все - таки плохо переваривает, получаем после trace:
<& &="&">&</&>
Но это сугубо флешовые дела, ни FF ни iE такого не переносят. Я бы даже отнес это к багам.
Или, к примеру, дашь какому-нибудь товарищу, незнакомому с flash, отредактировать подобный XML. Не глядя он сохранит его в win1251.
И чем тут поможет заголовок с кодировкой?
И чем тут поможет заголовок с кодировкой?
Ну если не идиот, то сохранит в той, что указана. Когда ничего не написано — сохранит в первой попавшейся.
DarkLight
19.01.2007, 14:59
А это когда как. Был случай, когда мне утверждали что xml в utf-8 т к так было в заголовке написано. А файл был в win1251 сохранен.
Ну если не идиот, то сохранит в той, что указана. Когда ничего не написано — сохранит в первой попавшейся.
Когда ничего не написано - сохранит в той, в которой открывал.
Когда ничего не написано - сохранит в той, в которой открывал.
Вовсе необязательно.
DarkLight, и такое бывает. Потому что скорее всего уже такой документ прошел через руки этого идиота.
А мудро ли такому человеку xml доверять?
PS:: может тему - во "флейм" и еще страниц этак дцать?
В общем, если мне не дай бог придёться работать с человеком, который принебрегает данным заголовком, я его заставлю его дописать во все XML-файлы, что есть.Как бы тебя декларацию типа документа не заставили везде прописывать.:mosking:
Автоопределение тоже не всегда корректно работает.
Иван Дембицкий пишет: (http://www.artlebedev.ru/tools/technogrette/etc/flash-xml/)
XML.docTypeDecl, XML.xmlDecl
Flash никак не интерпретирует узлы XML, содержащие объявления типа документа и анализаторы достоверности. Такие узлы в текстовом виде помещаются в соответствующие свойства XML-объекта и никак не влияют на разбор или декодировку данных.
Пример узлов объявления типа документа:
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE Imprimatur SYSTEM "/entities.dtd">
В данном примере указание кодировки «windows-1251» никак не повлияет на разбор этого XML-документа во Flash. Детальнее практика применения различных кодировок будет рассмотрена далее в этой книге.
Просто нужно заранее и наперед подразумевать, что XML может работать не только во Flash.Можно много чего подразумевать. Все зависит от специфики.
Вывод: для xml указывать декларация документа желательно, но не обязательно при условии, что он используется только для флеша.
Но это сугубо флешовые дела, ни FF ни iE такого не переносят. Я бы даже отнес это к багам.Обычно, для проверки корректности xml, я просто открываю его в IE, если он не ругается, значит все ок, флеш съест.
А это когда как. Был случай, когда мне утверждали что xml в utf-8 т к так было в заголовке написано. А файл был в win1251 сохранен.Хороший пример. И дело может быть не только в идиоте, но и в обычной путанице. Я всю кодировку через Far проверяю, там сразу видно юникод это или нет.
__etc успокойтесь уже. Новичкам свойственно ошибаться. В этом наша сущ(ч)ность. <?xml прописала, между прочим. С самого начала.
В общем, если мне не дай бог придёться работать с человеком, который принебрегает данным заголовком, я его заставлю его дописать во все XML-файлы, что есть.
Ей богу, мой бывший начальник.
Обычно, для проверки корректности xml, я просто открываю его в IE, если он не ругается, значит все ок, флеш съест.
Так и я так делаю, но "&" ни FF, ни iE не кушают, поэтому я так уверенно и написал.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.