Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.08.2009, 12:36
random13 вне форума Посмотреть профиль Отправить личное сообщение для random13 Найти все сообщения от random13
  № 1  
Ответить с цитированием
random13
 
Аватар для random13

Регистрация: Oct 2006
Адрес: Москва
Сообщений: 889
По умолчанию ExternalInterface и Safari

возникла вот какая проблема, в браузерах используется разная адресация flash объекта, это я знаю, нашел в actionscript.org то что safari с IE отличились причем Safari совсем сильно, вот что получилось:

Код:
function thisMovie(movieName) {
    if (window[movieName]) {
    	alert('safari');
    	if (window[movieName].id != undefined) {
    		return window[movieName];
    	} else {
    		var x = window[movieName];
    		return x;
    	}
    }
    else {
        return document[movieName]
    }
}
это js вызов flash объекта...

проблема вот в чем я намеренно поставил алерт после первого условия почему то без него не работает, понятное дело не правильно но всё же не могу найти ошибку

Старый 21.08.2009, 12:45
incoob вне форума Посмотреть профиль Отправить личное сообщение для incoob Найти все сообщения от incoob
  № 2  
Ответить с цитированием
incoob

Регистрация: Mar 2008
Сообщений: 215
А что именно не работает?
Возможно, без вызова алерта window[movieName] еще не успевает до конца проинициализироваться.

PS И зачем такой странный внутренний if else?)

Старый 21.08.2009, 13:06
random13 вне форума Посмотреть профиль Отправить личное сообщение для random13 Найти все сообщения от random13
  № 3  
Ответить с цитированием
random13
 
Аватар для random13

Регистрация: Oct 2006
Адрес: Москва
Сообщений: 889
взято вот отсюда http://www.actionscript.org/forums/s....php3?t=172689

у меня после того как страница загружена отправяется флешке объект,
а что с моим if else не так

Старый 21.08.2009, 13:11
incoob вне форума Посмотреть профиль Отправить личное сообщение для incoob Найти все сообщения от incoob
  № 4  
Ответить с цитированием
incoob

Регистрация: Mar 2008
Сообщений: 215
то есть после body.onload получаем window[movieName] == undefined, так?
Код AS3:
    	if (window[movieName].id != undefined) {
    		return window[movieName];
    	} else {
    		var x = window[movieName];
    		return x;
    	}
код внтури if else вроде бы одно и то же делает, почему бы просто не написать
Код AS3:
return window[movieName]
?

Старый 21.08.2009, 13:16
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
getElementById спасёт отца.

Старый 21.08.2009, 13:17
random13 вне форума Посмотреть профиль Отправить личное сообщение для random13 Найти все сообщения от random13
  № 6  
Ответить с цитированием
random13
 
Аватар для random13

Регистрация: Oct 2006
Адрес: Москва
Сообщений: 889
[quote=incoob;844410]то есть после body.onload получаем window[movieName] == undefined, так?
Код AS3:
    	if (window[movieName].id != undefined) {
    		return window[movieName];
    	} else {
    		var x = window[movieName];
    		return x;
    	}
только не body.onload а window.onload
видимо да, с алертом соответственно всё ок

Цитата:
Сообщение от incoob Посмотреть сообщение
код внтури if else вроде бы одно и то же делает, почему бы просто не написать
Код AS3:
return window[movieName]
?
ну я думаю что раз так написали в том примере то неспроста,

по хорошему говоря возвращает объект
Код AS3:
return window[movieName]
Код AS3:
var x = window[movieName];
    		return x;
возвращает ссылку на объект

Добавлено через 4 минуты
Цитата:
Сообщение от etc Посмотреть сообщение
getElementById спасёт отца.
можно пример в студию как отца всё таки спасет

Старый 21.08.2009, 13:43
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Код:
function getFlash() { return document.getElementById('flashID'); }

Старый 21.08.2009, 13:52
random13 вне форума Посмотреть профиль Отправить личное сообщение для random13 Найти все сообщения от random13
  № 8  
Ответить с цитированием
random13
 
Аватар для random13

Регистрация: Oct 2006
Адрес: Москва
Сообщений: 889
Код:
function thisMovie(movieName) {
	/*
    if (window[movieName]) {
    	//alert('safari');
    	if (window[movieName].id != undefined) {
    		return window[movieName];
    	} else {
    		var x = window[movieName];
    		return x;
    	}
    }
    else {
        return document[movieName];
    }
    */
    return document.getElementById(movieName);
};
ситуацию это не очень спасло, Firefox работает, Safari как молчал так и молчит про остальных и думать не хочется

Старый 21.08.2009, 18:41
incoob вне форума Посмотреть профиль Отправить личное сообщение для incoob Найти все сообщения от incoob
  № 9  
Ответить с цитированием
incoob

Регистрация: Mar 2008
Сообщений: 215
А если все же попробовать body.onload, а не window.onload? Обычно все же так делают...
Правда сам я на сафари не проверял, так что результат не обещаю.

И еще, мне всегда казалось, что в яваскрипте возвращаются из функций и передаются в них значения по ссылке (кроме примитивных типов).

Старый 21.08.2009, 18:48
random13 вне форума Посмотреть профиль Отправить личное сообщение для random13 Найти все сообщения от random13
  № 10  
Ответить с цитированием
random13
 
Аватар для random13

Регистрация: Oct 2006
Адрес: Москва
Сообщений: 889
походу нашел что не совсем тут ошибка, скорее всего safari не правильно парсит js,

кстати вопрос это кто это так обычно делает?? а вы сами то пробовали body.onload????

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:18.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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