Двойная обратная связь с использованием IE8


Я использую ASP.NET и у меня есть кнопка Сохранить на вебформе. Когда эта кнопка сохранения нажата (один раз), и я использую IE8, обработчик событий выполняется дважды. Если я использую режим совместимости, он работает просто отлично. В FF все работает просто отлично. Я протестировал IE8 как на Vista, так и на windows 7 и получил то же самое поведение. IE7 работает просто отлично. Просто любопытно, что у кого-то была подобная проблема.

P.S. Я использую продвинутую систему компоновки, которая позиционирует и стилизует элементы управления на основе макета определение, так что это не просто стандартный бросок элементов управления на странице настройки.

7 6

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"/>

Я использовал jquery(formobj).trigger(submit) это было изменено на

jquery(formobj)[0].submit() 

Обратите внимание, я призываю представить непосредственно в форме, а не метод jQuery надеюсь, это кому-то поможет

У меня была такая же проблема в IE 11, и мне удалось ее исправить, добавив type= "button"в элемент управления button.