__doPostBack在firefox中不起作用

时间:2008-09-10 21:28:14

标签: c# asp.net

__doPostBack在firefox 3中无效(未检查2)。 IE 6& 7中的一切都运行良好,甚至可以在Chrome中使用

这是一个简单的asp:带有OnClick事件的LinkBut​​ton

<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有关。当我移除顶层面板时,它已被修复。

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

14 个答案:

答案 0 :(得分:5)

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

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

  

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

答案 1 :(得分:3)

我在Firefox中遇到了同样的问题(__ doPostBack无法正常工作) - 造成了一小时的浪费时间。问题原来是HTML。如果您使用这样的HTML:

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

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

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

键是类型属性。在Firefox中必须“提交”才能使用__doPostBack。其他浏览器似乎并不关心。希望这可以帮助其他任何遇到此问题的人。

答案 2 :(得分:1)

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

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

您可以在链接的OnClick上发布所有js代码吗?

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

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

答案 3 :(得分:1)

这可能看起来很元素,但你确认你的firefox设置没有设置为干扰回发吗?有时我遇到类似的问题,因为我在调试会话中遇到了奇怪的浏览器配置。

答案 4 :(得分:1)

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

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

检查您是否以这种方式接听电话,如果是这样,那么事件可能没有连线并且需要明确调用nedes。

答案 5 :(得分:1)

您对“Enabled ='false'”的期望是什么?

答案 6 :(得分:1)

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

答案 7 :(得分:0)

无论有没有OnClientClick事件,它仍然无效。

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

function __doPostBack(eventTarget, eventArgument) {

    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {

        theForm.__EVENTTARGET.value = eventTarget;

        theForm.__EVENTARGUMENT.value = eventArgument;

        theForm.submit();

    }

}

*&amp; 95;是下划线,似乎是stackoverflow代码块格式的问题。

答案 8 :(得分:0)

现在我想起来了,正如我上次编辑中所提到的,你想要删除javascript:在客户端点击属性中。它不是必需的,因为onclick事件是javascript。试试看,看看是否有效。

答案 9 :(得分:0)

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

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

答案 10 :(得分:0)

我在我正在处理的网络应用中遇到了同样的问题,我尝试了几个小时。

最后,我做了一个新的网络表格,在其中删除了一个链接按钮,它完美地工作了!

然后我注意到以下问题:

...

我将订单切换到以下内容,并立即修复: ...

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

答案 11 :(得分:0)

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

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

答案 12 :(得分:0)

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

我正在运行User Agent Switcher并且无意中选择了Googlebot 2.1代理。

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

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

答案 13 :(得分:0)

我遇到了与Firefox相同的问题。您可以使用jQuery .trigger()方法触发对您的回发事件注册为点击操作的元素的点击操作,而不是使用__doPostBack()吗?

例如,如果您的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事件触发。