__doPostBack не работает в Firefox - PullRequest
3 голосов
/ 11 сентября 2008

__doPostBack не работает в Firefox 3 (не проверено 2). Все отлично работает в IE 6 и 7 и даже работает в Chrome ??

Это простой asp: LinkButton с событием OnClick

<asp:LinkButton ID="DeleteAllPicturesLinkButton" Enabled="False" OnClientClick="javascript:return confirm('Are you sure you want to delete all pictures? \n This action cannot be undone.');" OnClick="DeletePictureLinkButton_Click" CommandName="DeleteAll" CssClass="button" runat="server">

Срабатывает подтверждение javascript, поэтому я знаю, что javascript работает, в частности это событие __doPostBack. На странице происходит гораздо больше, просто не знаю, будет ли это работать, чтобы опубликовать всю страницу.

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

Есть идеи?


Я надеюсь, что это правильный способ сделать это, но я нашел ответ. Я решил поставить его здесь, а не в ответе стекопотоков

Кажется, это как-то связано с вложением инструментария ajax UpdatePanel. Когда я снял панель верхнего уровня, она была исправлена.

Надеюсь, это поможет, если у кого-то еще есть такая же проблема. Я до сих пор не знаю, что именно вызвало проблему, но это было решением для меня.

Ответы [ 14 ]

5 голосов
/ 18 сентября 2008

Проверьте строку вашего агента пользователя. Однажды это случилось со мной, и я понял, что это потому, что я тестировал некоторые страницы как "googlebot". Сгенерированный JavaScript зависит от знания агента пользователя.

С http://support.mozilla.com/tiki-view_forum_thread.php?locale=tr&comments_parentId=160492&forumId=1:

Для сброса строки вашего пользовательского агента введите about: config в адресную строку и нажмите enter. Это поднимает список предпочтений. Введите general.useragent в поле фильтра, это должно показать несколько предпочтений (вероятно, 4 из них). Если у любого из них установлен статус пользователя, щелкните правой кнопкой мыши на предпочтении и выберите Сброс

.
3 голосов
/ 17 июня 2009

У меня была такая же проблема (__doPostBack не работает) в Firefox - из-за сплошного часа потраченного времени. Проблема оказалась в HTML. Если вы используете HTML, как это:

<input type="button" id="yourButton" onclick="doSomethingThenPostBack();" value="Post" />

Где doSomethingThenPostBack - это просто метод JavaScript, который вызывает __doPostBack, форма не будет публиковать в Firefox. Это будет PostBack в IE и Chrome. Чтобы решить проблему, убедитесь, что ваш HTML-код:

<input type="submit" id="yourButton" ...

Ключ - это атрибут type . Это должно быть " submit " в Firefox для работы __doPostBack. Другие браузеры, кажется, не заботятся. Надеюсь, что это поможет любому, кто столкнется с этой проблемой.

1 голос
/ 11 сентября 2008

что вы ожидаете от "Enabled = 'false'"?

1 голос
/ 11 сентября 2008

У меня были проблемы с firebug на некоторых веб-формах, что-то связанное с сетевым анализатором может привести к постбэкам.

1 голос
/ 11 сентября 2008

Вы обрабатываете событие PageLoad? Если это так, попробуйте следующее

if (!isPostBack)
{
    //do something
}
else if (Request.Form["__EVENTTARGET"].ToLower().IndexOf("myevent") >= 0)
{
    //call appropriate function.
}

Проверьте, получаете ли вы вызов таким образом, если это так, то, возможно, событие не является проводным и не требует явного вызова.

1 голос
/ 11 сентября 2008

это может показаться элементарным, но вы убедились, что ваши настройки Firefox не настроены так, чтобы мешать обратной передаче? Иногда я сталкиваюсь с подобными проблемами из-за странной конфигурации браузера, которую я имел во время сеанса отладки.

1 голос
/ 11 сентября 2008

Это потому, что вы делаете возврат подтверждение? похоже, что оператор return должен предотвратить запуск остальной части кода. я думаю, что если заявление будет работать

if (!confirm(...)) { return false; } _doPostBack(...);

Можете ли вы опубликовать весь код js в OnClick ссылки?

РЕДАКТИРОВАТЬ : ага, забыл, что кнопка ссылки выдает код, подобный этому

<a href="javascript:__doPostBack()" onclick="return confirm()" />
0 голосов
/ 16 июля 2014

У меня была такая же проблема с Firefox. Вместо использования __doPostBack() не могли бы вы использовать метод jQuery .trigger () для запуска действия щелчка по элементу, в котором ваше событие обратной передачи зарегистрировано как действие щелчка?

Например, если у вас был этот элемент на странице aspx:

<asp:Button runat="server" ID="btnMyPostback" OnClick="btnMyPostback_Click" CssClass="hide" ToolTip="Click here to submit this transaction."  />

И ваше событие обратной передачи в вашем контроллере:

 protected void btnMyPostback_Click(object sender, EventArgs e)
 {
     //do my postback stuff
 }

Вы можете сделать обратную передачу, позвонив по номеру:

$("#btnMyPostback").trigger("click");

Это вызовет событие Page_Load, если вам нужно что-то сделать на Page_Load.

0 голосов
/ 22 октября 2010

@ Террапин: вы все правильно поняли (для меня, во всяком случае).

Я запускал User Agent Switcher и по неосторожности оставил агента Googlebot 2.1 выбранным.

В службах Reporting Services 2008 это приводило к тому, что iframes, в которых фактически отображаются отчеты, имели размер около 300x200 пикселей, а в службах Reporting Services 2008 R2 выдает ошибки «__doPostBack undefined» в консоли ошибок.

Возвращение к пользовательскому агенту по умолчанию исправило все мои проблемы.

0 голосов
/ 22 июня 2010

У меня была похожая проблема. Оказалось, что Akamai изменяет строку пользовательского агента, потому что применяется параметр, который не нужен.

Это означало, что некоторые элементы управления .NET не отображали код __doPostBack должным образом. Эта проблема была в блоге здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...