Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.12.2010, 00:31
Новичок на форуме
Отправить личное сообщение для LyWf Посмотреть профиль Найти все сообщения от LyWf
 
Регистрация: 28.12.2010
Сообщений: 8

Динамическое добавление SWF
function work1() {
	var test = document.getElementById("player");
	var arr = tracks.split(",");
	for (var i=1; i<=arr.length-1; i++) {

		VK.Api.call("audio.search", {q: arr[0] + " " + arr[i] }, function (r) { flashvars = AddParam("flashvars", "comment="+ i +"&amp;m=audio&amp;file=" + r.response[1].url); });

		var object = document.createElement("object");
		object.type = "application/x-shockwave-flash";
		object.data = "player.swf";
		object.width = "400";
		object.height = "55";

		var bgcolor = AddParam("bgcolor", "#FFFFFF");
		var asa = AddParam("allowScriptAccess", "always");
		var movie = AddParam("movie", "player.swf");

		object.appendChild(bgcolor);
		object.appendChild(asa);
		object.appendChild(movie);
		object.appendChild(flashvars);

		test.appendChild(object);
	};
};

function AddParam(name, value) {
	if(0 /*@cc_on + 1 @*/) return ['<PARAM name="', name, '" value="', value, '" />'].join('');
	else {
		param.name = name;
		param.value = value;
	return param;
	};
};


Вызов функции и tracks генерируются через PHP. Тестируется пока на Google Chrome 8.0.552.224 и Mozilla Firefox 4 beta 7.

Буду благодарен за разъяснение ошибки и наставление на путь истинный.

Upd: flashvars на 6ой строке получает значение, но на 21ой она пуста. Причем вызов функции на 6ой строке происходит только при обращении к flashvars на 21ой, после чего выполнение завершается(наверно). Ступор...

Последний раз редактировалось LyWf, 28.12.2010 в 14:41.
Ответить с цитированием
  #2 (permalink)  
Старый 28.12.2010, 16:40
Новичок на форуме
Отправить личное сообщение для LyWf Посмотреть профиль Найти все сообщения от LyWf
 
Регистрация: 28.12.2010
Сообщений: 8

Осознал свою ошибку. Надо дожидаться ответа от сервера. Чем можно поставить цикл на паузу? Не похоже, что через setTimeout. Any help?
Ответить с цитированием
  #3 (permalink)  
Старый 28.12.2010, 17:31
Новичок на форуме
Отправить личное сообщение для LyWf Посмотреть профиль Найти все сообщения от LyWf
 
Регистрация: 28.12.2010
Сообщений: 8

function work1() {
	var test = document.getElementById("player");
	var arr = tracks.split(",");
	flashvars="";

	for (var i=1; i<=arr.length-1; i++) {
		VK.Api.call("audio.search", {q: arr[0] + " " + arr[i] }, function (r) {
			flashvars = '<param name="flashvars" value="comment=' + i + '&amp;m=audio&amp;file=' + r.response[1].url + '" />';
		});

		object = document.createElement("object");
		object.type = "application/x-shockwave-flash";
		object.data = "player.swf";
		object.width = "400";
		object.height = "55";

		var bgcolor = '<param name="bgcolor" value="#ffffff" />';
		var asa = '<param name="allowScriptAccess" value="always" />';
		var movie = '<param name="movie" value="player.swf" />';
		object.innerHTML = bgcolor + asa + movie + flashvars;

		test.appendChild(object);
	};
};

function AddParam(name, value) {
	if(0 /*@cc_on + 1 @*/) return ['<PARAM name="', name, '" value="', value, '" />'].join('');
	else {
		param = document.createElement("param");
		param.innerHTML = ['<PARAM name="', name, '" value="', value, '" />'].join('');
		return param;
	};
};


В Firefox 4 beta 7(8) такой вот нефеншуйный код работает. В Chrome flashvars пропадают(param не создается) где-то по пути. Теряюсь в догадках.
Ответить с цитированием
  #4 (permalink)  
Старый 28.12.2010, 18:25
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

я чуть не так делал.менял содержимое в теге через innerHtml. под содержимым я имею в виду создание объекта вызов плеера и ссылка на файл. то есть всё кроме названия файла и настроек было статично. и этот объект вкладывал в контейнер-что и давало возможность менять объект через innerHtml. работает во всех браузерах
Ответить с цитированием
  #5 (permalink)  
Старый 28.12.2010, 23:26
Новичок на форуме
Отправить личное сообщение для LyWf Посмотреть профиль Найти все сообщения от LyWf
 
Регистрация: 28.12.2010
Сообщений: 8

function work1() {
	window.test = document.getElementById("player");
	window.arr = tracks.split(",");
	window.j = 0;
	window.timer1 = window.setInterval("gtau()", 350);	
};

function gtau() {
	j++;
	VK.Api.call("audio.search", {q: arr[0] + " " + arr[j] }, function (r) {
		var object = "<object data='player.swf' width='400' height='55'> ";
		object += "<param name='bgcolor' value='#ffffff' /><param name='allowScriptAccess' value='always' /> <param name='movie' value='player.swf' /> ";
		object += "<param name='flashvars' value='comment=" + r.response[1].title + "&amp;m=audio&amp;file=" + r.response[1].url + "' /> </param> </object>";
		test.innerHTML += object;
	});
	if (j >= 4) clearInterval(window.timer1);
};


И правда, работает. Благодарю.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изображения поверх swf Georgiy (X)HTML/CSS 7 26.12.2013 12:12
Динамическое удаление строк таблицы Tankist Events/DOM/Window 16 03.07.2013 16:42
Динамическое добавление элементов Sanyo jQuery 9 03.05.2013 13:09
Динамическое добавление ещё одного ряда TextBox'ов. sergeos Элементы интерфейса 5 05.10.2010 20:36
Динамическое добавление нового option в form artwalek Элементы интерфейса 19 24.04.2009 17:42