Вы должны винить DOM в переупорядочении, вместо того, чтобы обвинять парсер.(Я написал анализатор HTML в Firefox.)
В Firefox различные атрибуты хранятся внутри разных представлений (в частности, атрибуты, которые обрабатываются как устаревшие подсказки для представления в целях CSS).Когда вы видите переупорядоченные атрибуты, это означает, что у вас есть атрибуты, принадлежащие разным видам внутренних блоков памяти на одном элементе.
Вы обнаружите, что порядок атрибутов, которые вы можете прочитать из DOM IE, также часто нетакой же, как в исходном порядке.
Это нормально.Спецификация просто требует, чтобы порядок был стабильным, поэтому, если вы дважды читаете innerHTML без изменения промежуточных атрибутов, вы должны получить одну и ту же сериализацию дважды.
В то время как точный порядок атрибутов определяется UAи может зависеть от таких факторов, как порядок, в котором атрибуты были заданы в исходной разметке, порядок сортировки должен быть стабильным, чтобы последовательные вызовы этого алгоритма сериализовали атрибуты элемента в том же порядке.
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#serializing-html-fragments