PDA

Просмотр полной версии : Как получить Url страницы?


makcn
07.04.2004, 19:06
Необходимо получить во флэше URL страницы на которой он находится. Что-то не нашёл я в МХ решения проблемы. _url даёт адрес самого swf-файла, а нужен адрес HTML-страницы... Может кто-нибудь уже сталкивался с чем-то подобным?

Nox Noctis
07.04.2004, 19:11
самое простое - передать во флэш window.location.href через тэг FlashVars. при загрузке страницы во флэше появится переменная содержащая адрес странички.

makcn
07.04.2004, 19:18
Это, как я понимаю, надо javascript использовать, а нет ли решения "чисто" на флэше?

Dindin
07.04.2004, 19:37
свойство _url возвращает (угадай что?) URL источника из которого был загружен файл в виде строки вида http:/servername/path/swf, причем для локальной машины - это путь к файлу, включая имя диска.
А для несохраненных проектов - временная папка

Nox Noctis
07.04.2004, 19:44
Оригинал написал(а) Dindin
(угадай что?)кто-то снова самый умный :))
человек в курсе что оно возвращает :)

никто не запрещал хранить свф и хтмл, в который он вставлен, в разных местах.
Оригинал написал(а) Dindin
_url даёт адрес самого swf-файла, а нужен адрес HTML-страницы...

Dindin
07.04.2004, 20:03
А я вовсе не самый умный, я самый звонкий :)
Какрма у меня такая - звенеть по поводу и без повода :)
Чаще все-таки без повода :)

Dindin
07.04.2004, 20:11
А у Вас, Nox, карма между прочим, испортилась :^)

makcn
07.04.2004, 20:30
Сделал на яве как написано тут (http://www.flasher.ru/tutorial/viewtut.php?id=125). Вроде работает :cool:

Nox Noctis
07.04.2004, 20:52
вот тут родной туториал:
http://www.macromedia.com/support/flash/ts/documents/java_script_comm.htm

а вот тут про поддержку броузерами разных видов коммуникации между джаваскриптом и флэшем
http://www.macromedia.com/support/flash/ts/documents/browser_support_matrix.htm

но я бы использовал FlashVars (см. исходник) а не setVariable, потому как setVariable работает через пень колоду и только в эксплорере (вроде бы.. не уверен..) Единственное неудобство ФлэшВарс - это то что приходится и обджект и ембед запихивать в document.write... че-то у меня не получилось у обджекта отдельно врайтом внести только нужный параметр :) но я соображаю плохо сейчас, так что может и модно на самом деле :)

тут есть подробности:
http://www.quirksmode.org/js/flash_call.html

2Dindin
она не испортилась - это мой вид деятельности :))

makcn
08.04.2004, 01:17
Спасибо за пример.

При использовании setVariable обнаружилась неприятная особенность - переменная загружается не сразу, и если работать с ней при событии onLoad, то она просто не будет успевать загружаться. Возможно это связано с методом watch (который используется в том примере - http://www.flasher.ru/tutorial/viewtut.php?id=125 ). Поправьте меня если это не так.

А вот при FlashVars всё успевает грузиться, но приходится писать много явы (целый килобайт на объект).

Nox Noctis
08.04.2004, 01:29
ээ.. по килобайту джаваскрипта ?
кто-то кого-то не понял :)
там страница увеличивается едва на 100 байт в результате такой операции

makcn
08.04.2004, 12:05
Из Вашего же примера:

<script>
document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="500" height="55" id="flash" align="middle">');
document.write('<param name="allowScriptAccess" value="sameDomain" />');
document.write('<param name="movie" value="swf/flash.swf" />');
document.write('<param name="menu" value="false" />');
document.write('<param name="FlashVars" value="_realURL='+window.location.href+'" >');
document.write('<param name="quality" value="high" />');
document.write('<param name="bgcolor" value="#000000" />');
document.write('<embed src="flash.swf" Flashvars="_realURL='+window.location.href+'" menu="false" quality="high" bgcolor="#000000" width="500" height="55" name="flash" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />');
document.write('</object>');
</script>

ИТОГО: 996 байт.

Nox Noctis
08.04.2004, 14:10
но если то же самое написать чистым хтмлом, без джаваскрипта, то получится 800 байт. итого разница меду скриптовым вариантом и не-скриптовым в 160 байт :)