Chrome似乎忽略了必须提出异步请求的SelectedIndexChanged事件.
任何人都知道一个简单的解决方法吗?
谢谢!
编辑:更多信息
正如我对Adam Lassek所说,updatepanel在点击之后刷新一个asp:Button,但它不适用于下拉列表的SelectedIndexChanged事件.
updatepanel设置为:
<asp:UpdatePanel ID="updPanel" runat="server" UpdateMode="Always" ChildrenAsTriggers="true">
没有指定触发器,并且dropdows具有AutoPostBack =“true”
(更新)(并重新引用)
经过几次尝试后,我发现这不是UpdatePanel的问题,但是似乎下拉列表的AutoPostback无法正常工作,即使在没有ScriptManager和UpdatePanel的页面中也是如此.
我相信这只是一个问题,只有这个项目,因为如果我从头开始一个新的网站,并复制这个结构,在Chrome中工作正常…
我正在尝试逐步删除原始项目中的所有其他事情,以确定是什么问题.
如果有人有一些想法在…
解决方法
小而快速的测试可能是欺骗性的,因为它似乎可以像现有的Ajax.NET库一样正常工作.这是因为它会执行第一个Ajax请求,并在该结束时失败,因此只有当您尝试执行第二个Ajax操作时,您会注意到它已失败.如果您在页面上放置了一个UpdateProgress控件,您会注意到,在第一个请求之后,您的UpdateProgress控件将不会消失.
幸运的是,有一个答案!
最近有一个很好的帖子详细说明了你可以在这里找到该做什么:
http://blog.turlov.com/2009/01/aspnet-ajax-compatibility-patch-for.html
它的一般要点是,Chrome和Safari 3都将自己的WebKit报告在用户代理字符串中.
您需要添加一些javascript来帮助Ajax.NET框架识别基于WebKit的浏览器,如下所示:
if (typeof(Sys.Browser.WebKit) == "undefined") { Sys.Browser.WebKit = {}; } if (navigator.userAgent.indexOf("WebKit/") > -1 ) { Sys.Browser.agent = Sys.Browser.WebKit; Sys.Browser.version = parseFloat(navigator.userAgent.match(/WebKit\/(\d+(\.\d+)?)/)[1]); Sys.Browser.name = "WebKit"; }
您需要将其添加到JavaScript文件中,并在ScriptManager中引用它:
<asp:ScriptManager ID="ScriptManager1" runat="server"> <Scripts> <asp:ScriptReference Path="~/assets/javascript/WebKit.js" /> </Scripts> </asp:ScriptManager>
请注意,您可以将WebKit.js保留在程序集中,并通过使用类似于以下的ScriptReference标签进行引用:
<asp:ScriptReference Assembly="Scripts" Name="Scripts.webkit.js" />
一旦你完成了所有这一切,如果可能的话,停止使用WebForms和Ajax.NET并使用MVC和jQuery 原文链接:https://www.f2er.com/aspnet/249617.html