IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Передача данных из JS в AS, редирект
  • Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.
    Начать продвижение сайта
  • Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом
Lalf
сообщение 21.07.2009 - 05:14
Сообщение #1


Новичок
*

Группа: Новичок
Сообщений: 9
Регистрация: 21.07.2009
Пользователь №: 9397



Доброго времени суток.
Я хочу сделать флэш ролик, который будет получать строковую переменную (url-адрес) из JavaScript, производить некоторые действия над этой переменной в ActionScript и переадресовывать пользователя на данный адрес.
Я очень много гуглил по поводу передачи данных из JS в AS, нашёл 2 способа:
- SWFObject (не удобен, много лишнего кода)
- Мост между JS и AS (ExternalInterface) - этот и выбрал.

Но возникла небольшая проблема, а именно: у меня не происходит редирект (переадресация) или не происходит передача данных из JS в AS.

На JS я пишу следующее:
Код
function sendFromJS(txt) {
var movie = (navigator.appName.indexOf("Microsoft")!=-1 ? window : document)["BridgeMovie"];

movie.sendFromJS(txt);
}


А в AS:
Код
// Flash Storage example

import flash.external.*;

ExternalInterface.addCallback("sendFromJS", null, recieveFromJS);

function recieveFromJS(t) {
//    _root.theText.text = t;
    getUrl(t, "_self");
// !!! или
    var my_lv:LoadVars = new LoadVars();
    my_lv.send(t, "_blank", "POST");
}

_root.button.onRelease = function() {
    ExternalInterface.call("recieveFromFlash", _root.theText.text);
    _root.theText.text = "";
}


"Publish -> разрешить доступ только к сети" делаю.
У меня Adobe Flash CS4.


Я вообще не знаю AS, поэтому могу ошибаться в типах данных.


Прошу Вашей помощи, Флэш-гуру.

Сообщение отредактировал Lalf - 21.07.2009 - 05:14
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 21.07.2009 - 09:38
Сообщение #2


Активист
****

Группа: Пользователь
Сообщений: 987
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



Если не работает в режиме эмуляции, то надо сначала зайти сюда:
http://www.macromedia.com/support/document..._manager04.html

Или не работает уже при выкладывании на сайт?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Lalf
сообщение 21.07.2009 - 17:26
Сообщение #3


Новичок
*

Группа: Новичок
Сообщений: 9
Регистрация: 21.07.2009
Пользователь №: 9397



Цитата
Если не работает в режиме эмуляции

Я извиняюсь, но что за режим эмуляции? Я просто вставляю флэшку в HTML, а потом смотрю в браузере эту страницу.

Цитата
http://www.macromedia.com/support/document..._manager04.html

А можно как-то без этого обойтись? Чтоб редирект происходил у всех пользователей, даже которые не меняют в своём плеере настроек.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 21.07.2009 - 18:05
Сообщение #4


Активист
****

Группа: Пользователь
Сообщений: 987
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



Цитата(Lalf @ 21.07.2009 - 18:26) *
Я извиняюсь, но что за режим эмуляции? Я просто вставляю флэшку в HTML, а потом смотрю в браузере эту страницу.
А можно как-то без этого обойтись? Чтоб редирект происходил у всех пользователей, даже которые не меняют в своём плеере настроек.


Вы можете смотреть флешку двумя путями:
1) Вы размещаете ее на сервере (т.е. она удаленная). Открываете браузер, подсоединяетесь к интернету и через браузер ее смотрите (браузер качает ее с сервера). Так она будет работать НА САМОМ ДЕЛЕ. Так ее и будут смотреть все остальные пользователи. Насколько я понимаю, вы так не делали, а пошли путем 2:
2) Флешка у вас на компе. И вы ее можете открыть хоть браузером, хоть автономным плеером, хоть еще чем. При открытии браузером будет что-то вроде эмуляции входа в интернет. У флеша тут срабатывают ограничения безопасности для обмена с JS. Поэтому вам нужно сходить на вышеуказанную страницу и разрешить ВАШЕМУ плееру обмениваться с браузером JS (остальным пользователям это делать не нужно). Это заморочка разработчика такая, к сожалению.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Lalf
сообщение 22.07.2009 - 03:41
Сообщение #5


Новичок
*

Группа: Новичок
Сообщений: 9
Регистрация: 21.07.2009
Пользователь №: 9397



Загрузил на сайт - та же история sad.gif
Может я что-то в коде накосячил?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 22.07.2009 - 12:28
Сообщение #6


Активист
****

Группа: Пользователь
Сообщений: 987
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



Цитата(Lalf @ 22.07.2009 - 04:41) *
Загрузил на сайт - та же история sad.gif
Может я что-то в коде накосячил?


Во-первых, проверьте, что возращает метод addCallback. Если он возращает true значит контакт с JS возможен.
Во-вторых, getUrl у вас написан с ошибкой - он у вас разве синим подсвечен?
В-третьих, из флеша вызывается JS-функция recieveFromFlash - где она?

И самое главное: используйте alert в JS и trace или запись в тестовое текстовое поле во флеше. Многие вопросы отпадут сами собой.
Посмотрите как сделан пример в хелпе по ExternalInterface.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Lalf
сообщение 23.07.2009 - 05:47
Сообщение #7


Новичок
*

Группа: Новичок
Сообщений: 9
Регистрация: 21.07.2009
Пользователь №: 9397



Цитата
Во-первых, проверьте, что возращает метод addCallback. Если он возращает true значит контакт с JS возможен.

Я не знаю как это сделать sad.gif Ладно бы ещё в JS можно было бы alert() сбацать, а тут я вообще не знаю sad.gif

Цитата
Во-вторых, getUrl у вас написан с ошибкой - он у вас разве синим подсвечен?

Точно! Не заметил это... Спасибо)

У меня теперь получается редирект, но он делается только по клику, я же хочу, чтоб он при загрузке страницы срабатывал. Возможно, нужно как-то проверить связь между JS и AS, чтоб JS подождал, пока флэшка загрузится? Помогите, пожалуйста, реализовать вот это.

То, что сейчас сделал. AS:
Код
import flash.external.*;

ExternalInterface.addCallback("sendFromJS", null, recieveFromJS);

function recieveFromJS(t) {
    var my_lv:LoadVars = new LoadVars();
    my_lv.send(t, "_self", "POST");
}


Полностью HTML-страница:
Код
<html><head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<title>JS - AS</title>

<script type="text/javascript">
function sendFromJS(value) {
    var movie = ((navigator.appName.indexOf("Microsoft")!=-1) ? window : document)["BridgeMovie"];  
    
    movie.sendFromJS(value);    
}
</script>
</head><body>

<input type="button" value="Click" onclick="sendFromJS('http://yandex.ru/')">

      
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="BridgeMovie" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" height="5" width="5">
    <param name="movie" value="red.swf">
    <param name="allowScriptAccess" value="sameDomain">
    <embed src="red.swf" name="BridgeMovie" play="true" loop="false" quality="high" allowscriptaccess="sameDomain" scale="exactfit" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" align="middle" height="5" width="5">
</object>

<script type="text/javascript">
sendFromJS('http://yandex.ru/');
</script>
</body></html>


Как видите, при нажатии на кнопку всё работает, а на при загрузке страницы почему-то не получается(
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 23.07.2009 - 12:21
Сообщение #8


Активист
****

Группа: Пользователь
Сообщений: 987
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



Цитата(Lalf @ 23.07.2009 - 06:47) *
У меня теперь получается редирект, но он делается только по клику, я же хочу, чтоб он при загрузке страницы срабатывал.


Я вообще сетевыми флешками почти не занимюсь rolleyes.gif
Но мне кажется, что это срабатывает политика безопасности или настройки браузера: открытие другой страницы/вкладки должно быть ЯВНО инициализировано пользователем, а не кодом.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Lalf
сообщение 24.07.2009 - 06:18
Сообщение #9


Новичок
*

Группа: Новичок
Сообщений: 9
Регистрация: 21.07.2009
Пользователь №: 9397



chingachgoog, спасибо за помощь, я всё таки использовал SWFObject и всё заработало как надо smile.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
MustLive
сообщение 28.07.2009 - 23:37
Сообщение #10


Ветеран конференции
*****

Группа: Flash Zone Team
Сообщений: 4332
Регистрация: 10.03.2005
Из: Киев
Пользователь №: 5



Цитата
А можно как-то без этого обойтись?

Lalf, для этого стоит запускать флешку с веб сайта. Причём помимо использования сайта в Интернете, можно использовать и локальный веб сервер (который ускорит процесс тестирования как флеш, так и других веб разработок).

Цитата
Вы размещаете ее на сервере (т.е. она удаленная).

chingachgoog, как я уже сказал, можно использовать локальный веб сервер (на localhost). Сервер будет локальным (поэтому в Интернет заходить не нужно будет, вообще можно не иметь соединения с Сетью), а для флеш плеера будет работать соответствующая политика безопасности (как для обычного веб сайта).

Цитата
Это заморочка разработчика такая, к сожалению.

Это такой защитный механизм и Адоб с каждой новой версией всё более ужесточает политики безопасности флеша (с исправлением дыр в плеере и плагине). При этом добавляя новые дыры, которые им придётся исправлять в новых версиях smile.gif.

Цитата
я всё таки использовал SWFObject и всё заработало как надо

Данную задачу можно было решить с помощью обоих методов (чтобы редирект работал и по клику и при загрузке страницы), но раз решил с помощью SWFObject, то и хорошо. Это популярный метод размещения флешек на веб сайтах, так что с ним всё бы обязательно заработало.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 15.08.2011 - 19:30
Сообщение #11


Активист
****

Группа: Пользователь
Сообщений: 987
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



А я вот тут подумал:

есть html-метка, которая заставляет запускать html-страничку только в песочнице зоны "интернет"
Код
<!-- saved from url=(0014)about:internet -->


А что если есть схожая метка (или возможность) запускать html-страничку в локальной песочнице? Тогда swf-ки с доступом локально-файловая система могли бы безпроблемно работать!
А то как-то западло лезть на сайт макромедии и устанавливать разрешение на конкретную папку или файл
http://www.macromedia.com/support/document..._manager04.html

Бысрый серф по инету результатов не дал. Что скажут знатоки html?

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
MustLive
сообщение 17.08.2011 - 00:54
Сообщение #12


Ветеран конференции
*****

Группа: Flash Zone Team
Сообщений: 4332
Регистрация: 10.03.2005
Из: Киев
Пользователь №: 5



Цитата
есть html-метка, которая заставляет запускать html-страничку только в песочнице зоны "интернет"

chingachgoog

Это Mark of the Web и данная метка поддерживается только в Internet Explorer (начиная с IE4). Другие браузеры не поддерживают и игнорируют данную метку.

Цитата
А что если есть схожая метка (или возможность) запускать html-страничку в локальной песочнице?

Для этого просто нужно не указывать данной метки (при работе с IE) и тогда при локальном запуске файла (в любом браузере) веб страница будет запущена в локальной зоне. Только тогда нужно будет устанавливать разрешения smile.gif. Но есть специальный обходной метод - использование локалхоста (для него, к тому же, есть своя запись Mark of the Web). Для которого можно лишь один раз установить разрешения флеш плеера и дальше спокойно работать.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 17.10.2011 - 21:15