ASP.Net链接按钮在Firefox(版本8)中不起作用

时间:2011-11-15 16:34:11

标签: asp.net facebook facebook-graph-api facebook-c#-sdk

我开发了一个在Facebook上使用的ASP.NET应用程序。它有一个简单的链接按钮,用于在旧版本的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后,我发现链接按钮无法正常工作,即该按钮不会导致回发。当我查看源代码时,导致回发的链接按钮的Javascript代码是

<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,谷歌浏览器,Safari)。

注意:我在Facebook中使用此ASP.Net Web应用程序作为应用程序。 Facebook基本上使用iFrame在其中显示该网站。

有一个类似的问题here,但它没有为我提供任何解决方案。 想知道这个问题是由Facebook iFrame还是Firefox引起的?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

看起来你并没有为LinkBut​​ton分配一个事件处理程序。

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

您发布的JavaScript是__doPostBack函数,它不是LinkBut​​ton独有的。在LinkBut​​tons使用__doPostBack来触发回发的意义上,你是正确的,但除非你为LinkBut​​ton分配一个事件处理程序,否则不会调用该函数。

出于调试目的,我还要将CausesValidation设置为false,以确保验证不会干扰点击事件。

答案 1 :(得分:0)

只需在。</body>标记之前的.master文件或其他appriopiate文件中使用此代码:

   <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'替换为您自己的。