Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.03.2010, 17:37
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

Flash + ExternalInterface + IE
Не совсем JS, но...
В общем беда такая.
Есть флеш с использованием
ExternalInterface.addCallback("getItem", getItem);

Есть JS, который подгружает этот флеш.
Пробовал добавлять флэш двумя путями - через document.createElement и через innerHTML в определенный див.
В обоих случаях флеш загружается и выскакивает проверочный ExternalInterface.call, во всех браузерах.
В обоих случаях к ролику можно обратиться по ID или через
function getMovie(movieName) {
	if (navigator.appName.indexOf("Microsoft") != -1) {
		return window[movieName];
	} else {
		return document[movieName];
	}
}


Однако после такой загрузки в IE и только в IE не получается обратиться к getItem.

Если флеш ролик грузится вместе со страницой, а не JS'ом, то все работает.
Если загружать флеш через SWFObject 2 - то опять же все работает.
Но у них код обфусцирован, а мне бы очень хотелось разобраться, как правильно добавлять в IE флеш с помощью JS, так, чтобы не отваливались ExternalInterface.addCallback.
Ответить с цитированием
  #2 (permalink)  
Старый 16.03.2010, 17:51
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Покажи, как Flash добавляешь на страницу.
Ответить с цитированием
  #3 (permalink)  
Старый 16.03.2010, 17:55
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

Например так:
var html_st = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="MyStorageSWF" width="1" height="1" ';
	html_st += 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">';
    html_st += '<param name="movie" value="MyStorage.swf" />';
    html_st += '<param name="quality" value="high" />';
    html_st += '<param name="allowScriptAccess" value="sameDomain" />';
    html_st += '<embed src="MyStorage.swf" quality="high"';
		html_st += 'width="1" height="1" name="MyStorageSWF" align="middle"';
		html_st += 'play="true" loop="false" quality="high" allowScriptAccess="sameDomain"';
		html_st += 'type="application/x-shockwave-flash"';
		html_st += 'pluginspage="http://www.macromedia.com/go/getflashplayer">';
	html_st += '</embed></object>';
	var div_st = document.createElement('div');
	div_st.style.position = 'absolute';
	div_st.style.left = '-10px';
	div_st.style.top = '-10px';
	div_st.style.overflow = 'hidden';
	div_st.innerHTML = html_st;
	document.body.insertBefore(div_st, document.body.firstChild);
	movie = getMovie('MyStorageSWF');


Хочу заметить, что сам флеш определяется %)
Ответить с цитированием
  #4 (permalink)  
Старый 16.03.2010, 18:06
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

А <embed> зачем? Сомневаюсь, что это решит проблему, но вообще минимальный код для вставки Flash выглядит как-то так:

Для Internet Explorer:
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="" height="">
    <PARAM name="movie" value="url" />
</OBJECT>


Для остальных браузеров:
<object type="application/x-shockwave-flash" data="url" width="" height=""></object>
Ответить с цитированием
  #5 (permalink)  
Старый 16.03.2010, 18:11
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

в общем убирание embed не помогло

Сократил до
if (navigator.appName.indexOf("Microsoft") != -1) {
	var html_st = '<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="MyStorageSWF" name="MyStorageSWF" width="1" height="1">';
    html_st += '<PARAM name="movie" value="MyStorage.swf" />';
	html_st += '</OBJECT>';
  } else {
	var html_st = '<object type="application/x-shockwave-flash" id="MyStorageSWF" name="MyStorageSWF" data="MyStorage.swf" width="1" height="1"></object>'
  }
	var div_st = document.createElement('div');
	div_st.style.position = 'absolute';
	div_st.style.left = '-10px';
	div_st.style.top = '-10px';
	div_st.style.overflow = 'hidden';
	div_st.innerHTML = html_st;
	document.body.insertBefore(div_st, document.body.firstChild);
	movie = getMovie('MyStorageSWF');


Проблема с IE осталась

Последний раз редактировалось Snipe, 16.03.2010 в 18:17.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расшифровка кода, генерируемого flash. ГостьФорума Общие вопросы Javascript 6 02.02.2011 01:26
вызов JS из Flash viftik Общие вопросы Javascript 3 16.03.2010 15:29
Как прицепить flash к HTML ? asked86 (X)HTML/CSS 2 01.04.2009 11:29
GetVariable (flash) не работает под FireFox Vodan Общие вопросы Javascript 2 21.12.2008 17:26
Програмно нажать кнопку на flash Faelor Общие вопросы Javascript 0 21.11.2008 15:11