Esto me ha bloqueado un poco también. Resulta que IE no permite la inserción de JS directamente a través de innerHTML a menos que incluya la propiedad 'aplazar' (consulte el segundo enlace a continuación). Esta propiedad es exclusiva de IE y, aparentemente, permite que IE difiera la ejecución de cualquier JS hasta que se haya cargado el otro marcado. Sin embargo, una advertencia ... si incluye dos etiquetas de secuencia de comandos (como yo lo hice), no hay garantía de que se ejecutará primero, ya que las secuencias de comandos parecen estar cargadas de forma asíncrona. Esto solo debería ser un problema si sus scripts son dependientes el uno del otro (como el mío).
También hay una advertencia adicional ... debe insertar marcas que no sean secuencias de comandos al mismo tiempo que inserta la secuencia de comandos. No pude insertar las etiquetas de secuencia de comandos por sí mismas, con o sin la propiedad 'aplazar'. Finalmente, las etiquetas de scripts deben colocarse después de que se inserten todas las demás marcas de scripts. De lo contrario, las etiquetas de script se eliminan del HTML insertado.
Aquí hay algunas referencias:
MS innerHtml Referencia:
http://msdn.microsoft.com/en-us/library/ms533897%28v=vs.85%29.aspx
MS Defer Referencia del inmueble:
http://msdn.microsoft.com/en-us/library/ms533719%28v=vs.85%29.aspx
ejemplo de secuencia de comandos de inserción a través de código (sí, de hecho funciona):
http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/insertScript_2.htm
Mi Código de prueba:
// I downloaded the MS example file above and tweaked their script a bit,
// resulting in this. Using the proper approach to the defer property
// (namely: defer="defer") did not provide me with consistent results, so
// sticking with 'DEFER' may be necessary.
// Note: Try moving the 'sHTML' variable to the end of the script string.
function insertScript2()
{
var sHTML="<input type=button onclick=" + "go2()" + " value='Click Me'><BR>";
var sScript = sHTML + "<SCRIPT DEFER type='text/javascript'> function go2(){ alert('Hello from inserted script.') } </SCRIPT" + ">";
ScriptDiv.innerHTML = sScript;
}
(+1) buena pregunta. –