Pero eso era para evaluar scripts cuando usabas innerHTML, como mostrabas en tu ejemplo...
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
<script type="text/javascript">
String.prototype.evalScripts=function(){
var pat=/<script[^>]*>([\S\s]*?)<\/script[^>]*>/ig;
var pat2=/\bsrc=[^>\s]+\b/g;
var elementos = this.match(pat) || [];
for(i=0;i<elementos.length;i++) {
var nuevoScript = document.createElement('script');
nuevoScript.type = 'text/javascript';
var tienesrc=elementos[i].match(pat2) || [];
if(tienesrc.length){
nuevoScript.src=tienesrc[0].split("'").join('').split('"').join('').split('src=').join('').split(' ').join('');
}else{
var elemento = elementos[i].replace(pat,'$1');
nuevoScript.text = elemento;
}
document.getElementsByTagName('body')[0].appendChild(nuevoScript);
}
return this.replace(pat,'');
}
onload=function(){
var sc='<scr'+'ipt type="text/javascript">alert("test");</scr'+'ipt>';
var otraCosa='lo que sea';
document.body.innerHTML=(sc+otraCosa).evalScripts();
}
</script>
</head>
<body>
</body>
</html>
Si en lugar de esta línea:
Código PHP:
document.body.innerHTML=(sc+otraCosa).evalScripts();
usás esta otra:
Código PHP:
document.body.innerHTML=(sc+otraCosa);
no se produce el alert
Otra cosa, estás seguro de esto?: type="application/javascript"