En JavaScript de la vieja escuela, podría hacer esto:
document.body.innerHTML = '<p id="foo">Some HTML</p>' + document.body.innerHTML;
En respuesta a tu comentario:
[...] Estaba interesado en declarar el origen de los atributos y eventos de un nuevo elemento, no el innerHTMLde un elemento.
Sin embargo, debe inyectar el nuevo HTML en el DOM; por eso innerHTMLse usa en el ejemplo de JavaScript de la vieja escuela. El innerHTMLdel BODYelemento se antepone con el nuevo HTML. Realmente no estamos tocando el HTML existente dentro de BODY.
Volveré a escribir el ejemplo mencionado anteriormente para aclarar esto:
var newElement = '<p id="foo">This is some dynamically added HTML. Yay!</p>';
var bodyElement = document.body;
bodyElement.innerHTML = newElement + bodyElement.innerHTML;
// note that += cannot be used here; this would result in 'NaN'
El uso de un marco de JavaScript haría que este código fuera mucho menos detallado y mejoraría la legibilidad. Por ejemplo, jQuery le permite hacer lo siguiente:
$('body').prepend('<p id="foo">Some HTML</p>');