【问题标题】:__doPostBack is not working in firefox__doPostBack 在 Firefox 中不起作用
【发布时间】:2008-09-10 21:28:13
【问题描述】:

__doPostBack 在 Firefox 3 中不起作用(尚未检查 2)。在 IE 6 和 7 中一切都运行良好,甚至在 Chrome 中运行?

这是一个简单的 asp:LinkBut​​ton 与 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 事件。页面上还有很多内容,只是不知道是否可以发布整个页面。

我在页面加载事件上启用控件。

有什么想法吗?


我希望这是正确的方法,但我找到了答案。我想我会把它放在这里而不是在stackoverflow“答案”中

似乎它与嵌套 ajax 工具包 UpdatePanel 有关。当我移除顶层面板时,它被修复了。

如果其他人有同样的问题,希望这会有所帮助。我仍然不知道具体是什么导致了这个问题,但这就是我的解决方案。

【问题讨论】:

  • 您应该将此添加为答案,然后“接受”您自己的答案。

标签: c# asp.net


【解决方案1】:

检查您的用户代理字符串。同样的事情曾经发生在我身上,我意识到这是因为我正在测试一些页面作为“googlebot”。生成的 JavaScript 取决于知道用户代理是什么。

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

要重置您的用户代理字符串,请在地址栏中键入 about:config 并按 Enter。这会显示一个首选项列表。在过滤器框中输入 general.useragent,这应该会显示一些首选项(可能是其中的 4 个)。如果有任何用户设置了状态,请右键单击首选项并选择重置

【讨论】:

  • 您的链接support.mozilla.com/…: 现在返回找不到页面。
  • 这个方法对我不起作用,我的代理字符串在 chrome 中是可以的。
【解决方案2】:

我在 Firefox 中遇到了同样的问题(__doPostBack 无法正常工作)——导致浪费了一个小时的时间。问题原来是HTML。如果你像这样使用 HTML:

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

“doSomethingThenPostBack”只是一个调用 __doPostBack 的 JavaScript 方法,表单 不会在 Firefox 中发布。它在 IE 和 Chrome 中回发。要解决此问题,请确保您的 HTML 是:

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

关键是 type 属性。它必须是 Firefox 中的“submit”,__doPostBack 才能工作。其他浏览器似乎并不在意。希望这对遇到此问题的其他人有所帮助。

【讨论】:

  • 救命贴。我在这里报告它也不适用于“
【解决方案3】:

这可能看起来很简单,但您是否确认您的 Firefox 设置未设置为干扰回发?有时我会因为调试会话中的奇怪浏览器配置而遇到类似问题。

【讨论】:

    【解决方案4】:

    是不是因为你在做return确认?似乎 return 语句应该阻止其余代码触发。我认为 if 语句会起作用

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

    能把所有的js代码贴在链接的OnClick里吗?

    编辑:啊哈,忘了链接按钮会发出这样的代码

    <a href="javascript:__doPostBack()" onclick="return confirm()" />
    

    【讨论】:

      【解决方案5】:

      您正在处理 PageLoad 事件吗?如果是这样,请尝试以下操作

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

      检查您是否以这种方式接到电话,如果是,则可能事件未连接,需要显式调用。

      【讨论】:

        【解决方案6】:

        您对 "Enabled = 'false'" 有什么期望?

        【讨论】:

          【解决方案7】:

          我在某些 web 表单上遇到了 firebug 问题,与网络分析器有关的事情可能会导致回发。

          【讨论】:

            【解决方案8】:

            无论有没有 OnClientClick 事件,它仍然不起作用。

            _doPostBack 事件是 .NET 生成的自动生成的 javascript。

            function __doPostBack(eventTarget, eventArgument) {
            
                if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
            
                    theForm.__EVENTTARGET.value = eventTarget;
            
                    theForm.__EVENTARGUMENT.value = eventArgument;
            
                    theForm.submit();
            
                }
            
            }
            

            *&95;都是下划线,好像是stackoverflow代码块格式的问题。

            【讨论】:

              【解决方案9】:

              现在我考虑了一下,正如我在上次编辑中所指出的那样,您想要删除 javascript: 在客户端点击属性中。不需要,因为 onclick 事件本身就是 javascript。试试看,看看是否有效。

              【讨论】:

                【解决方案10】:

                似乎它与嵌套 ajax 工具包 UpdatePanel 有关。当我移除顶层面板时,它被修复了。

                如果其他人有同样的问题,希望这会有所帮助。

                【讨论】:

                  【解决方案11】:

                  我正在开发的一个网络应用程序中遇到了同样的问题,我尝试解决了几个小时。

                  最后,我做了一个新的网络表单,在里面放了一个链接按钮,效果很好!

                  然后我注意到以下问题:

                  ...

                  我将顺序切换为以下,并且立即修复: ...

                  IE 没有任何问题(无论如何我都注意到了)。

                  【讨论】:

                    【解决方案12】:

                    我遇到了类似的问题。事实证明,Akamai 正在修改用户代理字符串,因为正在应用不需要的设置。

                    这意味着某些 .NET 控件无法正确呈现 __doPostBack 代码。此问题已在博客here

                    【讨论】:

                      【解决方案13】:

                      @Terrapin:你完全正确(对我来说,无论如何)。

                      我正在运行用户代理切换器,但无意中选择了 Googlebot 2.1 代理。

                      在 Reporting Services 2008 中,它导致实际呈现报告的 iframe 大约为 300x200 像素,而在 Reporting Services 2008 R2 中,错误控制台中抛出“__doPostBack undefined”错误。

                      切换回默认用户代理解决了我的所有问题。

                      【讨论】:

                        【解决方案14】:

                        我在使用 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 事件。

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2012-11-27
                          • 2012-02-27
                          • 2017-02-08
                          相关资源
                          最近更新 更多