Вот вам небольшая вариация, на тему: "Kак через flash запустить код JavaScript в системе UCOZ". Суть вопроса: Мне нужно было создать Flash-меню на сайте, для ссылок: "Регистрация", "Вход", "Выход", "Мой профиль" и т.д.
Только вот JavaScript у меня почему-то не запускался:
Как же я решила эту задачу СПОСОБ1 (!): JavaScript не запускается на компьтере из-за политики безопасности, что бы код заработал Flash нужно залить на сервер . код для кнопки Вход/Выход: on(press){javascript("new _uWnd('LF',' ',-250,-110,{autosize:0,closeonesc:1,resize:1},{url:'/index/40'});");} код для кнопки запускающий окошко "Мой профиль": on(press){javascript("window.open('http://classical-music.su/index/8','upp','scrollbars=1,top=0,left=0,resizable=1,width=680,height=350');document.location.search='user';");}
Как же я решила эту задачу СПОСОБ2 : Берем функцию открывающую окно по прямой ссылке: Code on(press){getURL('ссылка','способ_раскрытия');} 1. Для ссылки 'Вход' придумываем адрес страницы: http://classical-music.su/?login и вписываем ее в функцию getURL() В чем тут магия: Берем корневой адрес http://classical-music.su/ и добавляем к нему приставку ?login - данные, которые я передаю в html страницу. Обратите внимание, когда вы заходите на сайт под своим логином, кнопка "вход" меняется на кнопку "выход", т.е. имеется динамика. Чтобы сохранить во флешевом меню эту динамику я отслеживаю значение переменой $USER_LOGGED_IN$, которая равна единице, если посетитель вошел на сайт под своим логином, и импортирую во флеш: flashvars.logged = "$USER_LOGGED_IN$";
Теперь совершествуем ссылку, для того, что бы пользователь мог войти с любой страницы(http://..................?login), а не только с главной (http://classical-music.su/), как мы придумали с самого начала. Для этого импортируем во флешку переменную flashvars.pj_url = document.location.href; , где pj_url имя переменной, а document.location.href - адрес страницы. В саму флешку вставляем следующий код: on (press) {if(_root.logged == 1){getURL("http://classical-music.su/index/10", "_self");} else {var a:Array=_root.pj_url.split('?login'); getURL(a[0]+'?login','_self');} } где _root.logged - это переменная flashvars.logged, а _root.pj_url - это flashvars.pj_url. 2. В верхний блок сайта вставляем скрипт, который отслеживает передачу данных в HTML: Code 1. var varurl=location.search.substring(1); 2. if (varurl == 'login') {new _uWnd('LF',' ',-250,-110,{autosize:0,closeonesc:1,resize:1},{url:'/index/40'});} 3. if (varurl == 'nickname') {window.open('http://classical-music.su/index/8', 'upp', 'scrollbars=1, top=0, left=0, resizable=1, width=680,height=350'); document.location.search='user';}
В первой строчке, я присваиваю переменной varurl данные, которые я передаю в html страницу : "login" или 'nickname'. Делаю это по средствам JavaScript : location.search.substring(1); А вторая звучит следующим образом: Если переменная varurl равна строковому(!) значению "login", то в этом случае выполнить функцию new _uWnd. Третья строчка звучит аналогично, только добавляется следующий код: Code document.location.search='user'; Этот код меняет url: http://classical-music.su/?nickname, который запускает скрипт с окошком "мой профиль", на URL: http://classical-music.su/?user, чтобы при обновлении страницы, скрипт повторно не запускался.
Как же я решила эту задачу СПОСОБ3: Если вставить flash через форму <object>, и добавить к ссылке на flash объект (имя.swf) приставку (да, это все та же передача данных в html)т.е.Code имя.swf?var=$LOGIN_LINK$ То при клике на сам flash объект будет срабатывать скрипт (почему так происходит - не знаю, это свойство я нашла для сбя полезным).Результат трудов можно посмотреть на сайте - верхнее меню http://classical-music.su/ . Чтобы понять то, что я тут написала необходимо прочитать:
1. Статья о том, как правильно вставить Flash объект 2. Статья о том, как передать и извлечь данные html страницы по средствам JavaScript 3. Cтатья о том, как сделать flash динамичным 4. Статья о том, как изменить параметр URL при помощи JavaScript Автор статьи puprickalu
|