Двойная обратная связь с использованием IE8
Я использую ASP.NET и у меня есть кнопка Сохранить на вебформе. Когда эта кнопка сохранения нажата (один раз), и я использую IE8, обработчик событий выполняется дважды. Если я использую режим совместимости, он работает просто отлично. В FF все работает просто отлично. Я протестировал IE8 как на Vista, так и на windows 7 и получил то же самое поведение. IE7 работает просто отлично. Просто любопытно, что у кого-то была подобная проблема.
P.S. Я использую продвинутую систему компоновки, которая позиционирует и стилизует элементы управления на основе макета определение, так что это не просто стандартный бросок элементов управления на странице настройки.
7 ответов:
Мы используем onserverclick на теге кнопки вместо использования asp.net кнопка. Решение состояло в том, чтобы установить тип кнопки на "button". До этого тип не был установлен, и я думаю, что это был дефолт, чтобы представить.
Изменено
<button id="button1" runat="server" onserverclick="button1_OnClick" />
К
<button id="button1" runat="server" type="button" onserverclick="button1_OnClick" />
Теперь я не получаю двойной пост обратно в IE8.
Я только что исправил ошибку с похожими симптомами, которая была вызвана двумя формами.вызовы submit() выполняются в обработчике событий javascript на стороне клиента для кнопки.
Появляется вторая форма.представить (), игнорируется другими браузерами, но выполнен в IE8.
Я только что нашел решение аналогичной проблемы, с которой у меня были проблемы. Поскольку ни одно из предыдущих решений, казалось, не помогло мне, я решил опубликовать свое собственное решение.
Задача:
При использовании кнопки asp в веб-форме и использовании OnClientClick для запуска пользовательского механизма обратной связи. Обратная передача, кажется, происходит дважды (второй раз без применения viewstate) например:
function ok(){ docustompostbackthing(); } <asp:Button runat="server" ID="btnOk" Text="Ok" OnClientClick="ok();" cssClass="btn"/>
Решение:
Добавьте "return false;" после вызова функции js в поле кнопка OnClientClick. Добавление его в саму функцию не делает трюк.
Например:
function ok(){ docustompostbackthing(); } <asp:Button runat="server" ID="btnOk" Text="Ok" OnClientClick="ok();return false;" cssClass="btn"/>
Пожалуйста, посмотрите на html, как он отображается на странице:
Каждый раз, когда он присутствует
<img src=""/>
Двойная обратная связь может произойти, для некоторых браузеров...
Если это проблема, вы можете решить ее, установив пустой образ по умолчанию для каждой кнопки
<asp:ImageButton ImageUrl="~/Images/blank.gif"...
Просто чтобы добавить к числу решений.
Это не просто OnClientClick, который имеет проблемы, событие OnClick делает очень похожую вещь в IE8, а также.
<asp:Button runat="server" ID="btnOk" Text="Ok" OnClick="ok();" cssClass="btn"/>
Может быть обновлено до следующего, чтобы избежать запуска второго события.
<asp:Button runat="server" ID="btnOk" Text="Ok" OnClick="ok();return false;" cssClass="btn"/>