tan*_*hos 12 asp.net google-chrome autopostback drop-down-menu
我有一个简单的asp.net页面(框架3.5)和一个带有一系列下拉列表的UpdatePanel,我想异步填充.一切在所有主流浏览器(Opera,Safari,IE6,IE7,FF3)中都能正常工作,但在Chrome中则不行.
Chrome似乎忽略了必须发出异步请求的SelectedIndexChanged事件.
任何人都知道一个简单的解决方法吗?谢谢!
编辑:更多信息
正如我对Adam Lassek说的那样,更新面板在点击它内部的asp:Button之后刷新,但它不适用于下拉列表的SelectedIndexChanged
事件.
updatepanel设置如下:
<asp:UpdatePanel ID="updPanel" runat="server" UpdateMode="Always" ChildrenAsTriggers="true">
Run Code Online (Sandbox Code Playgroud)
没有指定触发器,并且dropdows有集合 AutoPostBack="true"
更新:(并重新开始)
经过几次尝试后,我发现它不是UpdatePanel的问题,但似乎即使在没有ScriptManager和UpdatePanel的页面中,下拉的AutoPostback也无法正常工作......我确信这是一个问题仅涉及这个项目,因为如果我从头开始创建一个新的WebSite并复制它的结构,在Chrome中工作正常...我试图逐步删除原始项目中的所有其他内容以找到确切的内容问题.
如果有人在此期间有一些想法......
jos*_*ley 15
与Ajax.NET和Chrome和Safari 3存在已知的不兼容性.
小的,快速的测试可能具有欺骗性,因为它似乎可以与现有的Ajax.NET库一起正常工作.这是因为它设法执行第一个 Ajax请求并在结束时失败,因此只有当您尝试执行第二个 Ajax操作时才会注意到它已失败.如果你在页面上放置一个UpdateProgress控件,你会注意到在第一次请求后你的UpdateProgress控件不会失败.
幸运的是,有一个答案!
最近有一篇很棒的帖子详细介绍了你可以在这里找到的内容:
http://blog.turlov.com/2009/01/aspnet-ajax-compatibility-patch-for.html
它的一般要点是Chrome和Safari 3都在其userAgent字符串中将自己报告为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";
}
Run Code Online (Sandbox Code Playgroud)
您需要将其添加到javascript文件并在ScriptManager中引用它:
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Path="~/assets/javascript/WebKit.js" />
</Scripts>
</asp:ScriptManager>
Run Code Online (Sandbox Code Playgroud)
请注意,您可以通过使用类似于此的ScriptReference标记将WebKit.js保存在程序集中并引用它:
<asp:ScriptReference Assembly="Scripts" Name="Scripts.webkit.js" />
Run Code Online (Sandbox Code Playgroud)
一旦你完成了所有这些,如果可能的话,停止使用WebForms和Ajax.NET并使用MVC和jQuery :)
归档时间: |
|
查看次数: |
24234 次 |
最近记录: |