__doPostBack在Firefox中不起作用

时间:2020-03-05 18:51:05  来源:igfitidea点击:

__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" answer"中

似乎与嵌套ajax工具包UpdatePanel有关。当我卸下顶层面板时,它已固定。

希望这对其他人遇到同样问题的情况有所帮助。我仍然不知道是什么引起了这个问题,但这就是我的解决方案。

解决方案

回答

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

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

我们可以在链接的OnClick中发布所有js代码吗?

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

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

回答

有或者没有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代码块格式的问题。

回答

这看似基本,但是我们是否验证了Firefox设置未设置为干扰回发?有时由于调试会话中的浏览器配置不正确,我也会遇到类似的问题。

回答

既然我已经考虑过了,正如我在上一次编辑中提到的那样,我们想将javascript:放在on client click属性中。不需要,因为onclick事件本身就是javascript。尝试一下,看看是否可行。

回答

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

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

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

回答

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

回答

我在某些Web表单上遇到了Firebug的问题,与网络分析器有关的事情可能会拖回回发邮件。

回答

似乎与嵌套ajax工具包UpdatePanel有关。当我卸下顶层面板时,它已固定。

希望这对其他人遇到同样问题的情况有所帮助。

回答

检查用户代理字符串。一次我发生了同样的事情,我意识到这是因为我正在测试某些页面作为" googlebot"。生成的JavaScript取决于了解用户代理是什么。

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

To reset your user agent string type about:config into the location bar and press enter. This brings up a list of preferences. Enter general.useragent into the filter box, this should show a few preferences (probably 4 of them). If any have the status user set, right-click on the preference and choose Reset

回答

我正在使用的网络应用程序中遇到了完全相同的问题,我尝试解决了几个小时。

最终,我创建了一个新的Web窗体,在其中放置了一个linkbutton,它运行良好!

然后,我注意到了以下问题:

...

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

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

回答

我在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中"提交"才能使__doPostBack正常工作。其他浏览器似乎并不在乎。希望这对遇到此问题的其他人有所帮助。

回答

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

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

回答

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

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

在Reporting Services 2008中,导致实际呈现报告的iframe约为300x200 px,而在Reporting Services 2008 R2中,在错误控制台中引发" __doPostBack undefined"错误。

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