Скрытая ошибка FreeTextBox в Firefox
У меня проблема с многофункциональным текстовым редактором FreeTextBox на моем сайте ASP.NET. Проблема возникает, когда я захожу на сайт с Firefox, и у меня есть экземпляр freetextbox в скрытом div. Скрытый элемент div также может быть панелью вкладок AJAX. Фактическая проблема заключается в том, что при загрузке страницы она генерирует необработанное исключение (firebug показывает функцию StoreHtml()) и останавливает обратную передачу!!
Есть где-нибудь проблема и решение для этого?
Спасибо
4 ответа
Недавно я столкнулся с аналогичной проблемой с вкладками пользовательского интерфейса jQuery. Что вам нужно сделать, это изменить CSS для скрытых вкладок на что-то вроде:
.hiddentab
{
position: absolute;
left: -99999999999999;
}
Это помещает скрытые вкладки далеко влево, и в режиме абсолютного положения это не приводит к появлению горизонтальных полос прокрутки. Когда вкладка отобразится, просто удалите класс hiddentab из элемента tab.
Это будет работать, если проблема связана с странным поведением Firefox с display: none.
Я нашел другое решение проблемы на тот случай, если кто-то его ищет. Я использовал javascript для переопределения функции OnSubmit формы, таким образом перехватывая исключение, вызвавшее проблему, и продолжая работу с остальным кодом.
Однако решение является своего рода "взломом", поскольку оно не охватывает все ситуации. Я нашел решение на форуме FreeTextBox и опробовал его, и оно работает. Единственное отличие в моем коде состоит в том, что я возвращаю true в конце функции переопределения:
function OvrdSubmit()
{
var ftbSubmit=document.forms[0].onsubmit;
if (typeof(ftbSubmit) == 'function')
{
document.forms[0].onsubmit = function()
{
try{ftbSubmit();}
catch(ex){}
}
}
// We are ok
return true;
}
Поскольку мой сайт является сайтом ASP.NET, мне также пришлось добавить эту строку в Page_Load():
ClientScript.RegisterOnSubmitStatement(this.GetType(), String.Concat(this.ClientID, "_OnSubmit"), "javascript: return OvrdSubmit();");
Надеюсь, это поможет кому-то с такой же проблемой.
Спасибо за ваш ответ, однако моя проблема в настоящее время заключается в том, что FreeTextBox находится внутри панели вкладок AJAX, поэтому для этого мне придется перестроить всю функциональность вкладки, а у меня нет достаточного времени!
Что бы это ни стоило, я близок к решению (я думаю), установив для атрибута.ReadOnly FTB значение true, а затем вернув его в значение false на контроллере.PreRender. Она работает в первый раз, когда страница загружается, поэтому теперь мне нужно выяснить, как правильно реализовать это для каждого постбэка.
Я опубликую решение, если найду его!
Спасибо, в любом случае!
Firefox имеет проблемы с тем, чтобы быть внутри чего-либо со стилем отображения: нет. Я использовал div с zIndex, который скрывал div до тех пор, пока он мне не понадобился. Я бы начал там.