Нет, нет кросс-браузерного решения вашей проблемы. Лучшее, что вы могли бы сделать, это собрать воедино что-то, что будет работать в кросс-браузерной манере.
Вот одно из решений:
function outerHTML( el, html ) {
if ( 'outerHTML' in el ) { // for most browsers
el.outerHTML = html;
} else { // for Firefox
var temp = document.createElement('div');
temp.innerHTML = html;
while (temp.firstChild) {
el.parentNode.insertBefore( temp.firstChild, el );
}
el.parentNode.removeChild(el);
}
};
Используйте это так:
var initDiv = document.getElementById('initDiv');
outerHTML( initDiv, '<div>testing</div>' );
Пример: http://jsfiddle.net/6VUNU/1/