__doPostBack在firefox 3中无效(未检查2)。 IE 6& 7中的一切都运行良好,甚至可以在Chrome中使用
这是一个简单的asp:带有OnClick事件的LinkButton
<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有关。当我移除顶层面板时,它已被修复。
希望如果其他人遇到同样的问题,这会有所帮助。我仍然不知道具体是什么导致了这个问题,但这对我来说是解决方案。
答案 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
事件触发。