PDA

Просмотр полной версии : framed swf


xuMuk
26.07.2005, 21:18
Каким образом флэшь ролик может узнать находится он в обычном хтмл или во фрэйме?

Пробовал решить данную задачу при помощи передачи ролику переменной из ява-скрипта (flashVars) - не получается.

Король
26.07.2005, 21:19
не получается передать или понять?

xuMuk
26.07.2005, 21:22
передать.

создавать и управлять объектами Js из самого ролика не сложно, но вот результат проверки на фрэймы как туда впихнуть - не понятно.

если есть у кого скрипт, реализующий передачу из Js во флэшь некоей переменной - буду признателен.

KidsKilla
26.07.2005, 21:32
вариант -- флеш забивать скриптом, и добавлять в src="my.swf?frame=true"
в флеше trace(_root.frame)

Король
26.07.2005, 21:38
<SCRIPT LANGUAGE=JavaScript>

function doPassVar(args){
var sendText = args.value;
window.document.myFlash.SetVariable("myVar", sendText);
}

</SCRIPT>

xuMuk
26.07.2005, 21:42
проблема в том, что как только я начинаю забивать флэшик из хтмл ява-скриптом - флэшик сразу же либо перестаёт работать, либо ничего не получает...

мою задачу конечно можно решить средствами пхп в одну строчку (ну ладно, две 8) ), но должно же быть и иное решение...

xuMuk
26.07.2005, 21:43
2король, сейчас попробую... 8)

xuMuk
26.07.2005, 22:30
Заработало так:

<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>

А можно ли упростить?

Король
26.07.2005, 23:51
а если так -
<SCRIPT LANGUAGE=JavaScript>
if (window.name = "content"){
flashObject.setVariable("frms", "true")
}else{
flashObject.setVariable("frms", "false")
}
</SCRIPT>

xuMuk
27.07.2005, 00:05
к сожалению идите говорит нафик...

толи потому, что тестирую оперой, толи потому, что флэшиков на странице 2, не считая того, что спрятан фрэймом...

ЗЫ. У меня там вместо оператора сравнения стоит оператор присваивания... Долго не мог воткнуть отчего не работает столь простой скрипт 8)
Спать пора...

xuMuk
27.07.2005, 01:21
При отгрузке в сеть возникла ещё одна проблема: не выполняется ява-скрипт, создаваемый мувиком:

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)

Но дело в том, что и этот вариант нормально не работает. Он работает только в ИЕ.

xuMuk
27.07.2005, 11:36
Подскажите пожалуйста: можно ли заставить работать в сети (в любом из браузеров) работать локально работающий во всех браузерах код:

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");

xuMuk
27.07.2005, 12:20
Простите мне мой самодостаточный флэйм...

Проблема была в следующем:
allowScriptAccess="sameDomain"

Дело в том, что при данном параметре флэшь даёт полномочия управлять скриптом мувиком только с того адреса с которого он открыт. При использовании JavaScript управление происходит с адреса пользователя.
Изменение данного параметра на:
allowScriptAccess="always"
позволяет заставить нормально работать ява скрипт, генерируемый мувиком.

Вторая проблема так же успешно решена.