ASP.NET AJAX Advance Tips Tricks (9) DropDownList在Firefox下的奇怪现象和解决方案——谁的BUG?...
前言:
今天在ASP.NET Forum里面遇到了一个及其怪异的问题,一个看似非常简单的demo在IE及其它浏览器中正常运行,然而在Firefox中却导致了奇怪的问题,使页面中的DropDownList死掉,经过研究,终于找到了一个解决方案,但此问题是谁的Bug仍不得而知。
问题重现:
一个ScriptManager
一个DropDownList
一个UpdatePanel,内有一个Button
在按钮点击事件中使用ScriptManager.RegisterStartupScript来输出一个window.alert
OK,够简单吧?!代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e) { }
protected void Button1_Click(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(this.Button2, Button2.GetType(), "CodeAlert", "alert('kao!');", true);
Button2.Text = "Updated " + DateTime.Now.ToString();
}
</script>
<html>
<head id="Head1" runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
</div>
<asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem>Text1</asp:ListItem>
<asp:ListItem>Text2</asp:ListItem>
<asp:ListItem>Text3</asp:ListItem>
<asp:ListItem>Text4</asp:ListItem>
<asp:ListItem>Text5</asp:ListItem>
</asp:DropDownList>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="Button2" runat="server" Text="Button" OnClick="Button1_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>
好!接下来,在IE浏览器中,结果就不用说了,非常正常。 让我们来看看在Firefox中的神奇现象:
大家可以看到,在按钮点击之后,我点击DropDownList,却发现不能选择想要的Item了!再点——下拉列表框根本就不出来了!
这时候,如果在页面上 右键——查看网页源码,关掉源码窗口,再回来试试——一切又恢复了正常。。。
Trouble Shooting
将RegisterStartupScript换成RegisterClientScriptBlock,问题依然如故。
调用其它JavaScript方法(非window.alert)则不会出现此问题。
解决方案
既然调用其它JavaScript方法(非window.alert)则不会出现此问题,那么我们试着用window.SetTimeout来间接执行alert:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e) { }
protected void Button1_Click(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(this.Button2, Button2.GetType(), "CodeAlert", "window.setTimeout(\"alert('Your code is expired at " + DateTime.Now.ToString() + "')\",0);", true);
Button2.Text = "Updated " + DateTime.Now.ToString();
}
</script>
<html>
<head id="Head1" runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
</div>
<asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem>Text1</asp:ListItem>
<asp:ListItem>Text2</asp:ListItem>
<asp:ListItem>Text3</asp:ListItem>
<asp:ListItem>Text4</asp:ListItem>
<asp:ListItem>Text5</asp:ListItem>
</asp:DropDownList>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="Button2" runat="server" Text="Button" OnClick="Button1_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>
测试,在Firefox下终于正常了。
疑惑
至于为什么会有这样的现象,是Firefox的bug还是ASP.NET AJAX的bug,仍不得而知...
转载于:https://www.cnblogs.com/blodfox777/archive/2009/03/24/1420701.html
ASP.NET AJAX Advance Tips Tricks (9) DropDownList在Firefox下的奇怪现象和解决方案——谁的BUG?...相关推荐
- ASP.NET AJAX Advance Tips Tricks (11) 三种方法动态创建Tooltip
前言 如何动态创建提示框(Tooltip)是ASP.NET Forum里的常见问题之一,在做技术支持时,我曾在英文博客上总结过ASP.NET和ASP.NET AJAX环境下如何动态创建提示框的三种常见 ...
- Asp.net Ajax框架教程
目录 (一).概述... (二).应用场景代码示例... 1).ScriptManager控件示例... 1. 在异步调用服务端注册客户端脚本新方法... 2. 捕获Ajax异步调用中 ...
- 优化asp.net ajax的脚本资源下载
大家好像都有一种同感,使用了asp.net ajax的网站的速度好像都不是特别快.目前维护的网站,页面执行时间在0.1秒上下,页面本身的HTML也在50K左右,经常都是页面标题已经显示出来一段时间了, ...
- Asp.net Ajax框架教程[教程下载]
Asp.net Ajax 框架教程 目录 (一).概述... (二).应用场景代码示例... 1).ScriptManager控件示例... 1. 在异步调用服务端注册客户端脚本新方法... ...
- July 4th Links: ASP.NET, ASP.NET AJAX, Visual Studio, Silverlight and IIS7
原文地址: http://weblogs.asp.net/scottgu/archive/2007/07/04/july-4th-links-asp-net-asp-net-ajax-visual-s ...
- Lost HTML Intellisense within ASP.NET AJAX Controls
原文出处:ScottGu's Blog Symptom: You are using ASP.NET AJAX Beta1 or Beta2, and create a .aspx page that ...
- 转:45 Useful JavaScript Tips, Tricks and Best Practices
原文来自于:http://flippinawesome.org/2013/12/23/45-useful-javascript-tips-tricks-and-best-practices/ 1 – ...
- ASP.NET AJAX(服务器回调)
如果只用纯粹的 js ,你必须弥补 ASP.NET 服务器端抽象和有限的 HTML DOM 之间的鸿沟,这不简单,没有 VS 的智能提示和调试工具,编写无错的代码和诊断错误都非常困难.由于各种突发事件 ...
- 转:26个Jquery使用小技巧(jQuery tips, tricks solutions)
26个Jquery使用小技巧(jQuery tips, tricks & solutions) 前段时间发布了Jquery类库1.4版本,使用者也越来越多,为了方便大家对Jquery的使用,下 ...
最新文章
- Oracle Data Guard 理论知识
- sqlserver 事务日志已满和'PRIMARY'
- P4323-[JSOI2016]独特的树叶【换根dp,树哈希】
- 【渝粤教育】电大中专办公设备使用与维护 (2)_1作业 题库
- php判断一个字符串是否为纯数字,php判断变量是否为纯数字字符串的方法
- 【linux】RedHat 安装 gcc、g++
- html禁止页面左右滑动,js阻止移动端默认事件以及只阻止横向滚动事件方法
- 基于Redis实现的抢购代码示例
- 9.25-CSS样式以及结构布局
- leetcode题解179-最大数
- 在.NET中读写INI文件 ——兼谈正则表达式的应用
- java 找出调用的方法_如何找到用Java调用给定方法的所有方法?
- [在职软件工程]面向对象的分析与设计
- 华为笔试题——分礼物
- 微软enchange服务器安装,Exchange 2010 图文安装详解
- 《自己动手写网络爬虫》笔记2-Http状态码
- 科比生涯数据分析——利用随机森林进行分类
- Linux知识点整理(五)—— Linux 磁盘与文件系统管理
- 程序员遇到有远见的丈母娘
- Uefi ABL读取XBL设置的标志位
热门文章
- Educational Codeforces Round 54 (Rated for Div. 2): D. Edge Deletion(最短路树)
- bzoj 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚(DP)
- bzoj 1614: [Usaco2007 Jan]Telephone Lines架设电话线(二分+SPFA)
- bzoj 1069: [SCOI2007]最大土地面积(旋转卡壳)
- 一文理解 pytorch 拟合网络的过程
- matlab2c使用c++实现matlab函数系列教程-ismember函数
- jQuery Mobile中弹窗popup的data-*选项
- word2016实现制表法设置公式居中,公式居中,编号右对齐
- 计算机操作视频及运用方式,电脑上可以使用什么方法来编辑、制作视频?
- 高一计算机word的试题,高一年级信息技术期末考试复习题