Firefox очищает выделение, когда вы нарушаете его, успешно вставляя узел в начальную точку.
Для меня второй щелчок иногда (в зависимости от того, какой диапазон текста выделен) завершается неудачно с:
Error: uncaught exception: [Exception... "Index or size is negative or greater than the allowed amount" code: "1" nsresult: "0x80530001 (NS_ERROR_DOM_INDEX_SIZE_ERR)" location: "..."]
при вызове insertNode. Поскольку вставка не удалась, выбор не очищен. Предположительно, это то, что происходит с вами - проверьте консоль ошибок.
Эта ошибка, по-видимому, является ошибкой Firefox. Я не могу точно отследить точные условия, которые его вызывают, но это связано с тем, какие границы узлов находятся в выделении.
Я могу заставить ваш пример всегда работать (и очищать выделение), вызвав document.body.normalize (), чтобы вернуть весь контент диапазона в один узел Text после того, как он был разделен циклом вставки / удаления. 1012 *