buenas Sirguy, aqui pongo el codigo del javascript, aunque me parece que se hace un poco espeso, haber si me podeis echar una mano, gracias.
Código HTML:
var embeddedContent =
{
isMSIE : (document.all && !window.opera) ? true : false,
/**
* Reinserta en el documento HTML los elementos que han sido incrustados mediante
* las etiquetas OBJECT, EMBED y/o APPLET, redefiniendo su propiedad outerHTML
*/
reinsertContent : function()
{
var totalNodes = new Array(3);
totalNodes['OBJECT'] = document.getElementsByTagName('OBJECT').length;
totalNodes['EMBED'] = document.getElementsByTagName('EMBED').length;
totalNodes['APPLET'] = document.getElementsByTagName('APPLET').length;
for(var tagName in totalNodes)
{
var counter = totalNodes[tagName] - 1;
for(var node; node = document.getElementsByTagName(tagName)[counter]; counter--)
{
var skipNode = false;
var isVideo = embeddedContent.detectVideoFile(node);
if(embeddedContent.isMSIE && isVideo)
{
/* En Internet Explorer se debe omitir el script para los nodos que
están llamando a un archivo de video debido a un fallo que se provocaría
al momento de reinsertar el contenido */
skipNode = true;
}
var sourceCode = null;
if(skipNode == false)
{
sourceCode = embeddedContent.getSourceCode(node);
}
if(sourceCode)
{
node.outerHTML = sourceCode;
}
}
}
embeddedContent.isMSIE = null;
},
/**
* Comprueba si se está utilizando el nodo para cargar un archivo de video (no incluye
* los archivos de video llamados desde una película Flash.
* @param node (object) - El nodo que será analizado
* @return isVideo (boolean) - TRUE o FALSE según el resultado obtenido
*/
detectVideoFile : function(node)
{
var videoFileTypes = 'mov|avi|wmv|rtv|rm|mpg|mpeg';
switch(node.nodeName)
{
case 'EMBED':
var fileName = node.getAttribute('src');
break;
case 'OBJECT':
var counter = node.getElementsByTagName('PARAM').length - 1;
for(var child; child = document.getElementsByTagName('PARAM')[counter]; counter--)
{
var attribute = child.getAttribute('name').toLowerCase();
if(attribute == 'src' || attribute == 'filename' || attribute == 'movie')
{
var fileName = child.getAttribute('value');
break;
}
}
break;
default: return false;
}
var fileType = fileName.substr(fileName.lastIndexOf('.') + 1).toLowerCase();
var isVideo = (videoFileTypes.indexOf(fileType) != -1) ? true : false;
return isVideo;
},
/**
* Obtiene el código HTML completo de un determinado nodo.
* @param node (object) - El nodo analizado
* @return sourceCode (string) - El código HTML obtenido
*/
getSourceCode : function(node)
{
var sourceCode = node.outerHTML;
switch(node.nodeName)
{
case 'EMBED':
return sourceCode;
break;
case 'OBJECT':
case 'APPLET':
var openTag = sourceCode.substr(0, sourceCode.indexOf('>') + 1).toLowerCase();
var closeTag = sourceCode.substr(sourceCode.length - 9).toLowerCase();
if(closeTag != '</object>' && closeTag != '</applet>')
{
/* Si el nodo está mal formado (etiquetas de apertura y cierre) se debe
anular el script ya que podría devolver un resultado incorrecto */
return null;
}
if(embeddedContent.isMSIE)
{
/* Para I. Explorer se debe obtener aparte el código HTML de los nodos hijos,
ya que la propiedad outerHTML en ocasiones devolverá un resultado incompleto */
var innerCode = embeddedContent.getInnerCode(node);
sourceCode = openTag + innerCode + closeTag;
}
return sourceCode;
break;
}
},
/**
* Obtiene el código HTML de los nodos hijos de un determinado nodo. No se debe utilizar directamente
* la propiedad innerHTML ya que en ciertos casos I. Explorer devolverá un resultado incompleto.
* @param node (object) - El nodo padre que será analizado
* @return innerCode (string) - El código HTML obtenido
*/
getInnerCode : function(node)
{
var innerCode = '';
for(var counter = 0, child; child = node.childNodes[counter]; counter--)
{
innerCode += child.outerHTML;
}
return innerCode;
}
}
/*
Debemos verificar que el agente de usuario cumpla con los requisitos míminos
para que el script se pueda ejecutar correctamente:
1) Soporte para la propiedad outerHTML y el método getElementsByTagName()
2) El agente de usuario debe ser Internet Explorer u Ópera
*/
if(verifyOuterHTML = document.getElementsByTagName('HEAD')[0].outerHTML)
{
verifyOuterHTML = null;
if(document.all || window.opera)
{
window.attachEvent('onload', embeddedContent.reinsertContent);
}
}