Я реализовал элемент управления .NET Web, который использует структуру обратного вызова, реализованную в ASP.Net 2.0. Это автоматический контроль, и он работает правильно в IE 6.0/7.0 и Google Chrome. Вот соответствующая функция обратного вызова:Обратные вызовы ASP.NET 2.0 не работают корректно в Firefox
function ReceiveServerData(args, context)
{
document.getElementById(context).style.zIndex = 300;
document.getElementById(context).style.visibility = 'visible';
document.getElementById(context).innerHTML = args;
fixHover(context);
}
В Firefox «арг» всегда одни и те же данные, так что innerHTML из <div>
, который является дисплей для моего раскрывающегося списка всегда показывает одни и те же элементы. Я дважды проверял код своей клиентской стороны, и правильная информация отправляется клиентом -> сервером и в обратном сервере -> клиентом.
Следует отметить, что в функции «WebForm_DoCallback», созданного в рамках .NET, следующий фрагмент кода вызывался:
if (setRequestHeaderMethodExists) {
xmlRequest.onreadystatechange = WebForm_CallbackComplete;
callback.xmlRequest = xmlRequest;
xmlRequest.open("POST", theForm.action, true);
xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlRequest.send(postData);
return;
}
и функцию обратного вызова ReceiveServerData называется как на xmlRequest.open("POST", theForm.action, true);
и xmlRequest.send(postData);
. Интересно, вызывает ли это ошибку, но я в конце своих навыков отладки.
Отредактировано для добавления - ReceiveServerData не вызывается дважды в первый раз, когда я использую раскрывающийся список - на самом деле выпадающее меню работает правильно для самого первого нажатия клавиши. Он перестает работать и удваивает обратный вызов со старыми данными возврата после первого нажатия клавиши.