Просмотр полной версии : framed swf
Каким образом флэшь ролик может узнать находится он в обычном хтмл или во фрэйме?
Пробовал решить данную задачу при помощи передачи ролику переменной из ява-скрипта (flashVars) - не получается.
не получается передать или понять?
передать.
создавать и управлять объектами Js из самого ролика не сложно, но вот результат проверки на фрэймы как туда впихнуть - не понятно.
если есть у кого скрипт, реализующий передачу из Js во флэшь некоей переменной - буду признателен.
KidsKilla
26.07.2005, 21:32
вариант -- флеш забивать скриптом, и добавлять в src="my.swf?frame=true"
в флеше trace(_root.frame)
<SCRIPT LANGUAGE=JavaScript>
function doPassVar(args){
var sendText = args.value;
window.document.myFlash.SetVariable("myVar", sendText);
}
</SCRIPT>
проблема в том, что как только я начинаю забивать флэшик из хтмл ява-скриптом - флэшик сразу же либо перестаёт работать, либо ничего не получает...
мою задачу конечно можно решить средствами пхп в одну строчку (ну ладно, две 8) ), но должно же быть и иное решение...
2король, сейчас попробую... 8)
Заработало так:
<SCRIPT LANGUAGE=JavaScript>
if (window.name = "content"){
document.write('<embed src="Untitled-1.swf?frms=ttrue" quality="high"
bgcolor="#ffffff" width="550" height="400" name="Untitled-1" align="middle"
allowScriptAccess="sameDomain" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer" />');
}else{
document.write('<embed src="Untitled-1.swf?frms=ffalse" quality="high"
bgcolor="#ffffff" width="550" height="400" name="Untitled-1" align="middle"
allowScriptAccess="sameDomain" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer" />');
}
</SCRIPT>
А можно ли упростить?
а если так -
<SCRIPT LANGUAGE=JavaScript>
if (window.name = "content"){
flashObject.setVariable("frms", "true")
}else{
flashObject.setVariable("frms", "false")
}
</SCRIPT>
к сожалению идите говорит нафик...
толи потому, что тестирую оперой, толи потому, что флэшиков на странице 2, не считая того, что спрятан фрэймом...
ЗЫ. У меня там вместо оператора сравнения стоит оператор присваивания... Долго не мог воткнуть отчего не работает столь простой скрипт 8)
Спать пора...
При отгрузке в сеть возникла ещё одна проблема: не выполняется ява-скрипт, создаваемый мувиком:
getURL('javascript:document.write("<frameset rows=0,* border=0>
<frame name=framed src=tr'+i+'.html>
<frame name=content src="+document.URL+"?embedded=yes>
</frameset>");', "_parent");
Хотя в локальном режиме работает без проблем.
В конечном итоге реализовал следующим образом:
в мувике getURL('javascript:frms('+i+')');
в хтмл:
<SCRIPT LANGUAGE=JavaScript>
function frms(i){
document.write("<frameset rows='0,*' border='0'>");
document.write("<frame name='framed' src='tr"+i+".html'>");
document.write("<frame name='content' src='" + document.URL + "?embedded=yes'>");
document.write("</frameset>");
}
</SCRIPT>
Кол-во строк document.write убрать по вкусу 8)
Но дело в том, что и этот вариант нормально не работает. Он работает только в ИЕ.
Подскажите пожалуйста: можно ли заставить работать в сети (в любом из браузеров) работать локально работающий во всех браузерах код:
getURL('javascript:document.write("<frameset rows=0,* border=0>
<frame name=framed src=tr'+i+'.html>
<frame name=content src="+document.URL+"?embedded=yes>
</frameset>");', "_parent");
Простите мне мой самодостаточный флэйм...
Проблема была в следующем:
allowScriptAccess="sameDomain"
Дело в том, что при данном параметре флэшь даёт полномочия управлять скриптом мувиком только с того адреса с которого он открыт. При использовании JavaScript управление происходит с адреса пользователя.
Изменение данного параметра на:
allowScriptAccess="always"
позволяет заставить нормально работать ява скрипт, генерируемый мувиком.
Вторая проблема так же успешно решена.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.