¿Cómo agregar un elemento al DOM y ejecutar su código?

Quiero agregar un elemento en el DOM existente para ejecutar el código de JavaScript.

Hice esto con YUI:

var scriptNode = Y.Node.create('alert("Hello world!");'); var headNode = Y.one('head'); headNode.append(scriptNode); 

Se ha agregado correctamente al DOM pero no me da una alerta.

Alguien sabe cuál es el problema?

No tengo idea de cómo funciona la función Node.create() YUI, así que no hay comentarios al respecto. Pero un simple script entre navegadores es:

  window.onload = function() { var s = document.createElement('script'); s.type = 'text/javascript'; var code = 'alert("hello world!");'; try { s.appendChild(document.createTextNode(code)); document.body.appendChild(s); } catch (e) { s.text = code; document.body.appendChild(s); } } 

El bloque try..catch es necesario ya que la mayoría de los navegadores prefieren el primer método, pero otros no y arrojan un error. El segundo método cubre esos. También puede simplemente evaluar el código, que es más o menos equivalente y lo que hacen algunas bibliotecas.

Encontré esta función en el código fuente de JQuery, que parece hacer lo que desea y se siente un poco más limpio que los otros métodos que se me presentan. Pero nuevamente soy un principiante de JS y probablemente no veo los detalles. De todos modos, alguien podría tomar algo útil de esto.

 function DOMEval( code, doc ) { doc = doc || document; var script = doc.createElement( "script" ); script.text = code; doc.head.appendChild( script ).parentNode.removeChild( script ); }