Проблема оказывается была в том, что в методе
closeredact при присвоении cell.innerHTML=cell.children.item(0).value; firefox удаляет все вложенные в ячейку элементы, а explorer нет. Вот и события генерируются не в ячейке,а в дочерних элементах, а в них я естественно никаких перехватов не писал.
В общем чтобы заработало нужно переписать closeredact вот так:
function closeredact(element)
{
var cell;
while (element.tagName!='TD'){
element=element.parentNode;
}
if((element.nodeType==1)&(element.tagName=='TD')){
cell=element;
}
var textarea=cell.getElementsByTagName('TEXTAREA')[0];
var val=textarea.value;
cell.removeChild(textarea);//ВОТ ЗДЕСЬ ВСЯ СОЛЬ.
var onclickattr =cell.attributes.getNamedItem('onclick');
onclickattr.value='redact(this)';
cell.innerHTML=val;
var re=/_changed/;
if(cell.innerHTML!=innertext){
while (element.tagName!='TR'){
element=element.parentNode;
}
if((element.nodeType==1)&(element.tagName=='TR')){
var inputs=element.getElementsByTagName('input');
for (var i=0;i<inputs.length;i++){
if((inputs.item(i).tagName=='INPUT')&(inputs.item(i).getAttribute('name')=='id')&
(inputs.item(0).getAttribute('value')!='_inserted')&(!re.test(inputs.item(0).getAttribute('value')))){
if(inputs.item(0).getAttribute('value')==""){
inputs.item(0).setAttribute('value','_inserted');
}else{
var value=inputs.item(0).getAttribute('value');
inputs.item(0).setAttribute('value',value+'_changed');
}
}
}
}
}
}