проблема решается примерно так:
1) ставишь firebug (
http://firebug.ru/)
2) вставляешь в цикл console.log(current) (пишет на вкладку console firebug'а)
3) видишь, что цикл не выполняется
4) проверяешь с помощью console.log какое условие не выполняется
5) исправляешь ошибку или задаешь вопрос: "а какой аналог вот этой штуки в ff?"
p.s. я бы на твоем месте не добавлял лишние уровни вложенности:
if (! evt) return;
p.p.s. и поместил бы ; после while на новую строку, а то первое впечатление, что current.parentElement.removeChild(current); - тело цикла
p.p.p.s. имхо такая запись тернарного оператора читабельнее:
evt = evt ? evt
:( window.event ? window.event
: null );