Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Flash + JS Проблемы в опера и ие. (http://www.flasher.ru/forum/showthread.php?t=107897)

pizzZ 11.02.2008 23:28

Здраствуйте.
Есть страница состоящая их фреймов, на которую помещен flash ролик. При нажатии на кнопку в flash выпполняеться код:
Код:

getURL("javascript:pom1('1');");
Запускаеться функция на JS pom1
Все хорошо работает.

Проблема в следующем
Загружаю страницу в ie6. Flash уже загрузился и работает, нажимаю на кнопку, выполняеться pom1 что останавливает выполнение всего остального кода на странице. подумал, решил сделать дополнительный фрейм в ролике. Добавил на страницу такой код:

Код:

var movieName = "Flash";
function thisMovie(movieName) {
  if (navigator.appName.indexOf ("Microsoft") !=-1) {
    return window[movieName]
  }        else {
    return document[movieName]
  }
}
function movieIsLoaded (theMovie) {
  if (typeof(theMovie) != "undefined") {
    return theMovie.PercentLoaded() == 100;
  } else {
    return false;
  }
}
function go() {
  if (movieIsLoaded(thisMovie(movieName))) {
  thisMovie(movieName).Play();
  }
}

Функция go запускаеться когда js закончит работу.
Все хорошо. Загружаеться страница, выполняеться весь js. Flash переходит на следующий фрейм.

Теперь проблема в опера
Загружаеться страница. Переходим на любую страницу, нажимаем в браузере кнопку назад. и js не выполняеться. В итоге фрейм не начинает играть. И останавливаеться на первом пустом фрейме.


Что думаю
Добавить в первый фрейм операторы запускающие через 1,2,5 секунд следующий фрейм.
Хм, проблема будет в следующем.Но это не выход. Как узнать сколько надо ждать секунд.

вот такая проблема. Что кто думает?

P.S. Flash 6 использую

iNils 12.02.2008 17:02

Для взаимосвязи флеша с js есть класс ExternalInterface. Используйте его, а не getURL("javascript

pizzZ 12.02.2008 17:10

Дабы в ИЕ 6 на XP стандартной установки, ролик работал без установки плагинов использую 6 flash. Весь ролик это набор кнопок. ExternalInterface не поддерживает 6 плеер.

iNils 12.02.2008 17:21

Ну и зря. Процент использования 6-го плеера ничтожно мал.

pizzZ 12.02.2008 17:26

А где посмотреть этот процент?

screamge 12.02.2008 17:26

На Back (Forward) в Opere даже алерт не срабатывает.

Нужно разбираться с этим:
Цитата:

выполняеться pom1 что останавливает выполнение всего остального кода на странице.
Так не должно происходить.

Цитата:

А где посмотреть этот процент?
http://www.adobe.com/products/player...netration.html

pizzZ 12.02.2008 17:31

Однако происходит. Сюда и написал, потому что сам немогу ниче придумать больше.

iNils 12.02.2008 17:33

В 2006 году :)
Я тогда собирал статстику, с 5000 уникальных пользователей в день. 40% пользовались 7-плеером, 40% - 8-ой. На 6-ку призодилось меньше 9%, и 1% на 4 и 5.
Через полгода, когда уже вышла бета 9-ки, на ней сидело уже 5%. А доля 6-ки уменьшилась на 2%, то есть стала 8%.

Если вы считаете, что за 1,5 года она не упала до 2-3%, то мучайтесь дальше с getURL. :)

screamge 12.02.2008 17:35

Кстати говоря, процент того что у пользователя не будет 8 плейера равен проценту что у пользователя будет отключён дж-с. Так что идеальных решений в этом случае нет.

pizzZ 12.02.2008 17:37

У заказчика стоит 6. Если вдруг страница попросит что то обновить, заказчик не будет рад. Понятно, что можно обьяснить, запарить, и уговорить. НО! Лучше придумать решение, дабы и в 6 работало.

iNils 12.02.2008 17:40

Число пользователй 8-ки и 7-ки меньше, чем 9-ки. Так как это могут быть только те, кто давно ставил эти плеера.

Цитата:

Сообщение от pizzZ
У заказчика стоит 6.

А если бы у него стояла 5 или 4?

pizzZ 12.02.2008 17:45

Тогда бы отказался от flash.
Ладно. Все это флейм.
Вопрос конкретный, подскажите как без смены версии flash плеера заставить все работать? Или что бы вы сделали. (смену плеера не предлагать)

Я думаю, на 1 фрейм ролика повесить скрипт, который по прошествию 5-ти секунд будет переходить на 2-ой фрейм. Есть ли какие нибудь варианты?

screamge 12.02.2008 17:48

И вообще исходя из логики «по-умолчанию» тогда оперы у юзера тоже не должно быть.
А вы попробуйте через интервал вызывать функции дж-с на странице в опере при клике на бэк, узнаете ответ, выйдет или нет :)

pizzZ 12.02.2008 18:07

Цитата:

Сообщение от screamge
А вы попробуйте через интервал вызывать функции дж-с на странице в опере при клике на бэк, узнаете ответ, выйдет или нет :)

вышло. :) Благодарю.
Только как это лучше использовать)

pizzZ 12.02.2008 18:50

Кто ищет тот всегда найдет. Благодарю screamge

Код:

function start(){
        s = setInterval("ale()",1000);
}
function ale () {
  if (movieIsLoaded(thisMovie(movieName))) {
  if(thisMovie(movieName).GetVariable('i')==1) go();
  }
}
function go() {
  p=20;
  if (movieIsLoaded(thisMovie(movieName))) {
  thisMovie(movieName).Play();
  }
}

onLoad="javascript:start();"

Во flash на первом фрейме i =1 на втором 2


Часовой пояс GMT +4, время: 23:03.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.