У меня есть скрипт JavaScript, который использует SWFobject для встраивания флеш-плеера. Когда мне нужно вставить флэш-плеер с
swfobject.embedSWF(..)
Я получаю сообщение о том, что swfobject не определен. Я считаю, что это происходит потому, что наш веб-сайт кэширует JavaScript для моего приложения, но не кэширует файл swfobject.js, поэтому myApp.js, который вызывает swfobject.embedSWF (..), загружается задолго до swfobject.js. В настоящее время я не могу изменить то, что кэшируется, поэтому я решил эту работу:
while(!$(that.mediaPlayer).find('#'+that.playerID)[0]){
console.log(that.playerID+' not defined');
that.embedFlashPlayer(1,1);
}
...
this.embedFlashPlayer = function (width, height){
var that = this;
var playerID = that.playerID;
var server = document.URL.replace(/^.*\/\//,'').replace(/\..*$/,'');
var flashvars = {};
var flashSrc = "/flash/AS3MediaPlayer.swf?server"+server+"&playerID="+playerID;
//parameters
var params = {};
params.movie = flashSrc;
params.quality = "high";
params.play = "true";
params.LOOP = "false";
params.wmode = "transparent";
//attributes
var attr = {};
attr.classid = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000";
attr.codebase = "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,16,0";
attr.width = "" + width;
attr.height = "" + height;
attr.id = playerID;
//console.log("embedding flash object with id "+playerID);
//command to embed flash object
try{
swfobject.embedSWF(flashSrc, "no-flash", width, height,"9.0.0","",flashvars,params);
}catch(err){
// I DON'T KNOW WHAT TO DO HERE
}
return true;
}
Мой код проверяет, был ли записан объект flash. Если это не так, он вызывает метод embed this.embedFlashPlayer () несколько раз в цикле while, пока не будет найден div, содержащий swf. Беда в том, что это просто петли навсегда. Любое предложение о том, что я могу сделать в блоке try-catch, если swfobject не определен? Я на 90% уверен, что это потому, что мой скрипт загружается быстрее и выполняет команду embedSwfObject до загрузки библиотеки, но я могу ошибаться. Мой скрипт выполняется в команде $ (function () {...}). Будем благодарны за любые теории, предложения, идеи относительно того, как я могу решить эту проблему.