__doPostBack在Firefox中不起作用
__doPostBack在Firefox 3(未选中2)中不起作用。一切在IE 6&7中都运行良好,甚至在Chrome中也可以运行?
这是一个简单的asp:LinkButton,带有一个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"错误。
切换回"默认用户代理"修复了我的所有问题。