Скрытая ошибка 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 до тех пор, пока он мне не понадобился. Я бы начал там.

Другие вопросы по тегам