Pues… ayer estuvo conmadre… en la tarde, el Alex y yo vimos la de ‘Monty Python and the Holy Grail’. No me había carcageado tanto. En la noche, se hizo hamburguesada en casa del Rober. Fue todo improvisado, pero salió conmadre. Hubo vino, chelas y cocas.

Ahorita que ando agregando el ‘del.icio.us playtagger‘ a este blog, estoy poniéndolo a prueba con un pequeño extracto de audio de la película que vimos ayer. Conseguí unos ‘clips de Monty Python’ (de la parte en la que salen los “Knights who say ‘Ni’“).

Ni!
Ekky-ekky-ekky-ekky-z’Bang, zoom-Boing, z’nourrrwringmm… Ni.

Vaya, que lata… unas cuantas horas después logré hacerlo funcionar…
chéquense esto…

Comparen estos dos códigos (el de del.icio.us contra mi xhtmlplaytagger)… el problema es que el método de innerHTML no funciona para documentos tipo XHTML… y lo extraño es que tampoo
(los pondré en el resto del post… por si quieren leerlos).

El playtagger de del.icio.us es:

if(typeof(Delicious) == ‘undefined’) Delicious = {}
Delicious.Mp3 = {
playimg: null,
player: null,
go: function() {
var all = document.getElementsByTagName(’a')
for (var i = 0, o; o = all[i]; i++) {
if(o.href.match(/\.mp3$/i)) {
var img = document.createElement(’img’)
img.src = ‘http://del.icio.us/static/img/mp3/play.gif’; img.title = ‘listen’
img.height = img.width = 12
img.style.marginRight = ‘0.5em’
img.style.cursor = ‘pointer’
img.onclick = Delicious.Mp3.makeToggle(img, o.href)
o.parentNode.insertBefore(img, o)
}}},
toggle: function(img, url) {
if (Delicious.Mp3.playimg == img) Delicious.Mp3.destroy()
else {
if (Delicious.Mp3.playimg) Delicious.Mp3.destroy()
img.src = ‘http://del.icio.us/static/img/mp3/stop.gif’; Delicious.Mp3.playimg = img;
Delicious.Mp3.player = document.createElement(’span’)
Delicious.Mp3.player.innerHTML = ‘<object style=”vertical-align:bottom” classid=”clsid:d27cdb6e-ae6d-11cf-96b8-444553540000″‘ +
‘codebase=”http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0″‘ +
‘width=”100″ height=”14″ id=”player” align=”middle”>’ +
‘<param name=”allowScriptAccess” value=”sameDomain” />’ +
‘<param name=”flashVars” value=”theLink=’+url+’” />’ +
‘<param name=”movie” value=”http://test.dev.del.icio.us/static/swf/playtagger.swf” /><param name=”quality” value=”high” />’ +
‘<param name=”bgcolor” value=”#ffffff” />’ +
‘<embed style=”vertical-align:bottom” src=”http://test.dev.del.icio.us/static/swf/playtagger.swf” flashVars=”theLink=’+url+’”‘+
‘quality=”high” bgcolor=”#ffffff” width=”100″ height=”14″ name=”player”‘ +
‘align=”middle” allowScriptAccess=”sameDomain” type=”application/x-shockwave-flash”‘ +
‘ pluginspage=”http://www.macromedia.com/go/getflashplayer” /></object>’
img.parentNode.insertBefore(Delicious.Mp3.player, img.nextSibling)
}},
destroy: function() {
Delicious.Mp3.playimg.src = ‘http://del.icio.us/static/img/mp3/play.gif’; Delicious.Mp3.playimg = null
Delicious.Mp3.player.removeChild(Delicious.Mp3.player.firstChild); Delicious.Mp3.player.parentNode.removeChild(Delicious.Mp3.player); Delicious.Mp3.player = null
},
makeToggle: function(img, url) { return function(){ Delicious.Mp3.toggle(img, url) }}
}

Delicious.addLoadEvent = function(f) { var old = window.onload
if (typeof old != ‘function’) window.onload = f
else { window.onload = function() { old(); f() }}
}

Delicious.addLoadEvent(Delicious.Mp3.go)

Mi modificación (que sería la versión compatible con XHTML):

var Delicious;
if(typeof(Delicious) == ‘undefined’) {Delicious = {};}
Delicious.Mp3 = {
playimg: null,
player: null,
go: function() {
var all = document.getElementsByTagName(’a');
if(all) {
for (var i = 0; i < all.length; ++i) {
var o = all[i];
if(o.href.match(/\.mp3$/i)) {
var img = document.createElement(’img’);
img.src = ‘http://del.icio.us/static/img/mp3/play.gif’; img.title = ‘listen’; img.alt = ‘.’;
img.height = img.width = 12;
img.style.marginRight = ‘0.5em’;
img.style.cursor = ‘pointer’;
img.onclick = Delicious.Mp3.makeToggle(img, o.href);
o.parentNode.insertBefore(img, o);
}}}},
toggle: function(img, url) {
if (Delicious.Mp3.playimg == img) {Delicious.Mp3.destroy();}
else {
if (Delicious.Mp3.playimg) {Delicious.Mp3.destroy();}
img.src = ‘http://del.icio.us/static/img/mp3/stop.gif’; Delicious.Mp3.playimg = img;
Delicious.Mp3.player = document.createElement(’span’);
Delicious.Mp3.player.setAttribute(”id”, “delicious”);
var tempobj = document.createElement(’object’);
tempobj.setAttribute(”id”, “player”);
tempobj.setAttribute(”type”, “application/x-shockwave-flash”);
tempobj.setAttribute(”data”, “http://del.icio.us/static/swf/playtagger.swf”);
tempobj.setAttribute(”style”, “vertical-align:bottom;”);
tempobj.setAttribute(”classid”, “clsid:d27cdb6e-ae6d-11cf-96b8-444553540000″);
tempobj.setAttribute(”codebase”, “http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0″);
tempobj.setAttribute(”width”, 100);
tempobj.setAttribute(”height”, 14);
var param0 = document.createElement(’param’);
var param1 = document.createElement(’param’);
var param2 = document.createElement(’param’);
var param3 = document.createElement(’param’);
var param4 = document.createElement(’param’);
var embed0 = document.createElement(’embed’);
param0.setAttribute(”name”, “allowScriptAccess”);
param0.setAttribute(”value”, “always”);
param1.setAttribute(”name”, “flashVars”);
var tlu = “theLink=” + url;
param1.setAttribute(”value”, tlu);
param2.setAttribute(”name”, “movie”);
param2.setAttribute(”value”, “http://del.icio.us/static/swf/playtagger.swf”);
param3.setAttribute(”name”, “quality”);
param3.setAttribute(”value”, “high”);
param4.setAttribute(”name”, “bgcolor”);
param4.setAttribute(”value”, “#ffffff”);
embed0.setAttribute(”style”, “vertical-align:bottom;”);
embed0.setAttribute(”src”, “http://del.icio.us/static/swf/playtagger.swf”);
embed0.setAttribute(”flashVars”, tlu);
embed0.setAttribute(”quality”, “high”);
embed0.setAttribute(”bgcolor”, “#ffffff”);
embed0.setAttribute(”width”, 100);
embed0.setAttribute(”height”, 14);
embed0.setAttribute(”name”, “player”);
embed0.setAttribute(”allowScriptAccess”, “always”);
embed0.setAttribute(”type”, “application/x-shockwave-flash”);
embed0.setAttribute(”pluginspage”, “http://www.macromedia.com/go/getflashplayer”);
tempobj.appendChild(param0);
tempobj.appendChild(param1);
tempobj.appendChild(param2);
tempobj.appendChild(param3);
tempobj.appendChild(param4);
tempobj.appendChild(embed0);
Delicious.Mp3.player.appendChild(tempobj);
img.parentNode.insertBefore(Delicious.Mp3.player, img.nextSibling);
}},
destroy: function() {
Delicious.Mp3.playimg.src = ‘http://del.icio.us/static/img/mp3/play.gif’; Delicious.Mp3.playimg = null;
Delicious.Mp3.player.removeChild(Delicious.Mp3.player.firstChild); Delicious.Mp3.player.parentNode.removeChild(Delicious.Mp3.player); Delicious.Mp3.player = null;
},
makeToggle: function(img, url) { return function(){ Delicious.Mp3.toggle(img, url); };}
};

Delicious.addLoadEvent = function(f) { var old = window.onload;
if (typeof old != ‘function’) {window.onload = f;}
else { window.onload = function() { old(); f(); };}
};

Delicious.addLoadEvent(Delicious.Mp3.go);