Кнопка ссылки ASP.Net не работает в Firefox (версия 8) - PullRequest
0 голосов
/ 15 ноября 2011

Я разработал приложение ASP.NET для использования в Facebook. Он имеет простую кнопку ссылки, которая используется, как и ожидалось, в более старых версиях Firefox.

<asp:LinkButton ID="lbtnLogOut" runat="server">Disconnect</asp:LinkButton>

 Protected Sub lbtnLogOut_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lbtnLogOut.Click       
    Response.Redirect(Request.ApplicationPath & "/login.aspx")
  End Sub

После обновления Firefox до 8 я заметил, что кнопка Link не работает, т.е. кнопка не вызывает Post Back. Когда я просматриваю исходный код, код Javascript для кнопки ссылки, вызывающей Post Back, равен

<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>

Я использовал Firebug для отладки вышеприведенного кода, но функция _doPostBack не срабатывает, когда я нажимаю кнопку ссылки. Он работает во всех других браузерах (IE 9, Google Chrome, Safari).

Примечание. Я использую это веб-приложение ASP.Net в качестве приложения внутри Facebook. Facebook в основном отображает этот сайт внутри, используя iFrame.

Здесь есть похожий вопрос , но он не дает мне никакого решения. Хотите знать, проблема вызвана Facebook iFrame или Firefox? Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 16 ноября 2011

Не похоже, что вы назначаете обработчик событий для LinkButton.

<asp:LinkButton ID="LinkButton1" runat="server" Text="Click" OnClick="LinkButton1_Click" />

JavaScript, который вы разместили, является функцией __doPostBack, которая не является эксклюзивной для LinkButton. Вы правы в том смысле, что LinkButtons используют __doPostBack для запуска обратных передач, но функция не будет вызываться, пока вы не назначите обработчик событий для LinkButton.

В целях отладки я бы также установил для CausesValidation значение false, просто чтобы убедиться, что проверка не мешает событию click.

0 голосов
/ 09 ноября 2012

Просто используйте этот код в своем .master-файле или другом файле-файле непосредственно перед конечным тегом </body>:

   <script language="javascript" type="text/javascript">
   <!--
   function __doPostBack(eventTarget, eventArgument) {
   var theform;
   if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {
   theform = document.aspnetForm;
   }
   else {
   theform = document.forms["aspnetForm"];
   }
   theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
   theform.__EVENTARGUMENT.value = eventArgument;
   theform.submit();
   }
   // -->
  </script>

Замените «aspnetForm» своим собственным.

...