2007-10-12
Семь бед — один embed
Сегодня встала задача сделать страничку с ютубовскими мувиками валидной в XHTML Transitional. Сама по себе задачка решена давно, можно использовать для этих целей SWFObject, но он зараза никак wmode не позволяет менять, или я просто не умею это делать. Кроме того синтаксис его использования какой-то громоздкий и некрасивый. Решил своими силами сделать аналог посимпатичнее.Конечно за безбаговость не ручаюсь но потестировал на IE6, IE7, в Опере, FF и Sаfari.
Самое интересное что код с тегом Object нигде не понадобился. Я то думал что он нужен для эксплорера, оказывается что шестой эксплорер тег Object кушать наотрез отказался, а вот EMBED скушал за милую душу.
Вот что получтилось:
flasher.js
function flasher(){
this.attr = {'wmode':'transparent','type':'application/x-shockwave-flash'};
var i;
for(i=0;i<arguments.length;i=i+2){
this.attr[arguments[i]] = arguments[i+1];
}
}
flasher.prototype.write = function(element){
var el = document.getElementById(element);
var args = '';
for(key in this.attr){
args = args + ' ' + key+'='+this.attr[key];
}
el.innerHTML = '<embed '+args+'></embed>';
}
this.attr = {'wmode':'transparent','type':'application/x-shockwave-flash'};
var i;
for(i=0;i<arguments.length;i=i+2){
this.attr[arguments[i]] = arguments[i+1];
}
}
flasher.prototype.write = function(element){
var el = document.getElementById(element);
var args = '';
for(key in this.attr){
args = args + ' ' + key+'='+this.attr[key];
}
el.innerHTML = '<embed '+args+'></embed>';
}
как это использовать:
<div style="width:425px;margin:10px auto;" id="darren_dicke"><!--Darren Dicke--></div>
<script type="text/javascript">
// <![CDATA[
var fo = new flasher("src", "http://www.youtube.com/v/g3Y_mQA0E0A", "width","425", "height","350" );
fo.write("darren_dicke");
// ]]>
</script>
к недостаткам можно отнести отсутствие автообновления плагина, займусь этим как нибудь на досуге потом.
<script type="text/javascript">
// <![CDATA[
var fo = new flasher("src", "http://www.youtube.com/v/g3Y_mQA0E0A", "width","425", "height","350" );
fo.write("darren_dicke");
// ]]>
</script>
разрешены только теги br, font, span, p, strong, u, p, blockquote, a, div, img - остальные будут безжалостно удаляться
комментарии: