открываю в FF файл следующего содержания:
<html><head><title>Страница</title></head><body>Текст</body></html>

в скрипте пишу:
window.getBrowser().contentDocument.documentElement.innerHTML = "<head><title>Страница</title></head><body>Текст</body>";

после чего строка "Текст" в браузере сдвигается вверх и влево, хотя вроде записываю то же что в документе и было.
почему?

Может, со стилями чего или <DOCTYPE связанное ?

Попробуйте изучить, что показывает DOM Inspector до выполнения скрипта и после. Подозреваю, что есть какие-то отличия.

Коля Дубр пишет

Попробуйте изучить, что показывает DOM Inspector до выполнения скрипта и после. Подозреваю, что есть какие-то отличия.

хмм, вы абсолютно правы. После того как я присваиваю св-ву innerHTML элемента documentElement текст наподобии <head><title>Страница</title></head><body>Текст</body> DOM-inspector перестаёт показывать <body> и <head>, а  вcё что было в них рисует на уровень ниже чем <html>, то есть
получается что FF не парсит или точнее парсит то что я ему пихаю но как то странно.

вот пример:

<script>
function setInnerHTML() {
        content.document.documentElement.innerHTML = "<head><title>Title</title></head> \
                <body>Body<br><br><form><button onclick=\"setInnerHTML();\">Set</button></form></body>";
}
</script>
<html><head><title>Title</title></head>
<body>Body<br><br><form><button onclick="setInnerHTML();">Set</button></form></body>
</html>