- 浏览: 2612568 次
- 性别:
- 来自: 小胖儿的大城
文章分类
最新评论
-
ni4wangba0:
ni4wangba0 写道亲测,算法有问题。对不起,其实是我自 ...
谈谈"求线段交点"的几种算法(js实现,完整版) -
ni4wangba0:
亲测,算法有问题。
谈谈"求线段交点"的几种算法(js实现,完整版) -
kers007:
苹果不让Webapp 在appstore 里发布,我不知道对 ...
苹果真的要在 AppStore 里封杀 WebApp 吗? -
striveandlive:
fins = js大牛
[原创]GT-Template, 一个超轻量级的js模板工具. -
AlwaysYang:
基础扎实的才能行走天下。
关于body的"大小"在ie和ff下的一些基础知识
在给gt grid编写editor时发现的 safari 版本 3.0.4
这个bug 简单点说就是,
当select下的所有option的 selected属性都是 false时,
大多数浏览器 都会将 选项指向上次选择的项,而safari会生造出一个空的option来,
而且这种情况不是总发生, 什么时候发生 什么时候不发生不好说 看后面的代码注释吧
演示文件见附件
这个bug 简单点说就是,
当select下的所有option的 selected属性都是 false时,
大多数浏览器 都会将 选项指向上次选择的项,而safari会生造出一个空的option来,
而且这种情况不是总发生, 什么时候发生 什么时候不发生不好说 看后面的代码注释吧
演示文件见附件
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script type="text/javascript"> function init(selectObj) { // 对于s1 safari的做法和其他浏览器一致, 都是默认选中第一个 selectObj=document.getElementById('s1'); for (var i=0; i<selectObj.options.length; i++) { selectObj.options[i].selected=false; } // 对于s2 safari的做法就出现问题了, 会生造出一个 selectObj=document.getElementById('s2'); for (var i=0; i<selectObj.options.length; i++) { selectObj.options[i].selected=false; } alert(selectObj.value) // 注意这个alert. // 对于s3 safari的做法本来应该和 s2 一样 但是由于多了一个上面的alert, 一切又不同额 FT!!!! // 如果你把上面的 alert 注释了 那么 s3 和 s2 完全一样 selectObj=document.getElementById('s3'); for (var i=0; i<selectObj.options.length; i++) { selectObj.options[i].selected=false; } } </script> </head> <body onload="init();"> <select id="s1"> <option value="1" selected="selected" >aaaa</option> <option value="2">bbb</option> <option value="3">ccc</option> </select> <br/><br/> <select id="s2"> <option value="11" >zzz</option> <option value="22">xxxx</option> <option value="33">ccc</option> </select> <br/><br/> <select id="s3"> <option value="111" >bbb</option> <option value="222">nnn</option> <option value="333">mmm</option> </select> </body> </html>
- safari_bug.zip (850 Bytes)
- 下载次数: 27
评论
5 楼
hax
2008-03-05
测试代码:
<!DOCTYPE html> <html> <head> <title>Test SELECT of Safari <script> function info(o) { if (o === undefined) return 'UNDEFINED'; if (o === null) return 'NULL'; if (o === '') return 'EMPTY'; return o; } function out(msg) { out.buffer.push(msg); } out.buffer = []; out.show = function () { document.getElementById('stdout').innerHTML = out.buffer.join(''); } function testSelect(id) { var s = document.getElementById(id); out('test ' + id); out('<br/>'); out('options[0].selected = '); out(s.options[0].selected); out('<br/>'); out('options[0].selected = '); out(s.options[0].selected); out('<br/>'); out('value = '); out(s.value); out('<br/>'); out('options[0].selected = '); out(s.options[0].selected); out('<br/>'); out('selectedIndex = '); out(s.selectedIndex); out('<br/>'); out('<br/>'); /* s.options[s.selectedIndex].selected = false; out(s.selectedIndex); */ } window.addEventListener('load', function() { //testSelect('s4'); }, false); window.addEventListener('load', function() { testSelect('s5'); }, false); </script> </head> <body> <div id="stdout"></div> <form> <select id="s1"> <option value="1" selected="selected">1</option> <option value="2">2</option> <option value="3">3</option> </select> <script>testSelect('s1');</script> <br/> <select id="s2"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <script>testSelect('s2');</script> <br/> <select id="s3"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <script>setTimeout(function(){testSelect('s3');}, 1);</script> <br/> <select id="s4"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <br/> <select id="s5"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <br/> </form> <p><input type="button" onclick="out.show()" value="show log"/></p> </body> </html>
4 楼
fins
2008-03-05
恩 我现在就是这么做的 唉 郁闷啊 凭空又多了好多行代码
以精简代码为目的的重构 但是随着测试的深入 不停的添加代码
现在已经比"精简"前 多了上百行的代码了 :'(
以精简代码为目的的重构 但是随着测试的深入 不停的添加代码
现在已经比"精简"前 多了上百行的代码了 :'(
3 楼
hax
2008-03-05
那你就手动判断一下呀,如果值不符合任何一个option就设成默认的那个(比如第一个)。
2 楼
fins
2008-03-05
我是在 load之后的一个复杂的例子发现的这个bug
不在load里的话 添加 空option的问题还是存在的
我是在做可编辑列表的时候发现的
点击一个单元格 如果这个单元格对应的编辑器是 select 那么就吧单元格的值 set给select
这时候如果 单元格的值 不是select的选项中的任何一个 会加入 空option
这个比较郁闷啊
不在load里的话 添加 空option的问题还是存在的
我是在做可编辑列表的时候发现的
点击一个单元格 如果这个单元格对应的编辑器是 select 那么就吧单元格的值 set给select
这时候如果 单元格的值 不是select的选项中的任何一个 会加入 空option
这个比较郁闷啊
1 楼
hax
2008-03-05
你不要在load事件中测,如果在load之后测试,会看到不同的结果。
Safari的行为和FF不一样,它允许selectedIndex=-1,即一个都不选。
但是如果初始标签上没有selected,Safari会执行一个初始化过程,将第一个select起来。
你描述的行为貌似是因为这个初始化工作在load的时候还没有完成。
alert会延时,所以第一次alert之后,初始化工作就完成了。这是为什么alert会影响你的测试结果。
不过,任何时候只要你访问select上的selectedIndex,就都会进行初始化过程。
我个人认为这可以算一个bug,但是只在极端情况下出现。
Safari的行为和FF不一样,它允许selectedIndex=-1,即一个都不选。
但是如果初始标签上没有selected,Safari会执行一个初始化过程,将第一个select起来。
你描述的行为貌似是因为这个初始化工作在load的时候还没有完成。
alert会延时,所以第一次alert之后,初始化工作就完成了。这是为什么alert会影响你的测试结果。
不过,任何时候只要你访问select上的selectedIndex,就都会进行初始化过程。
我个人认为这可以算一个bug,但是只在极端情况下出现。
发表评论
-
HTML5 与 ”性工能“障碍
2012-12-13 18:08 9537HTML5 与 ”性工能“障碍 最近看了@王淮Harr ... -
聊聊 iOS 5 和 iOS 6 在HTML5 canvas渲染上的差异
2012-09-13 18:40 5957我录制了一段iphone4s 下 ios 5 和 ios 6 ... -
尝试挑战 running panda , HTML5的跑酷类游戏(开发中)
2011-08-01 00:02 5997我业余时间一直在尝试用HTML5 在ios平台上开发webga ... -
移动互联网 与 Web标准化技术
2011-07-14 19:54 3666移动互联网 与 Web标准化技术 ... -
为什么我喜欢safari 胜过chrome和ff?
2011-07-04 00:35 7794抛下IE不谈,目前在浏览器市场里 最受欢迎的莫过于chrome ... -
欢迎参加 "移动平台HTML5动画性能大赛"
2011-03-31 11:38 3774移动平台HTML5动画性能大赛 注 : 此页面为临时页面 待 ... -
为什么在今天,我要选择HTML5 (上) 【此文标题党,还是别看了】
2011-03-30 16:19 4005当初苹果禁止Flash登陆iOS设备时,曾经引起过一场“HTM ... -
HTML5游戏开发入门实例<脆弱的马里奥>
2011-03-14 20:10 10136HTML5游戏开发入门实例<脆弱的马里奥>: ht ... -
3月26号,北京,我将做一期HTML5游戏开发的技术讲座,欢迎参加.
2011-03-11 11:57 21413月26号,我将去北京做一次"html5游戏开发入门 ... -
w3ctech 2011 - 拥抱HTML5 技术大会即将召开,欢迎报名
2011-03-03 23:46 1636w3ctech 2011 - 拥抱HTML5 技术会议将于4月 ... -
[新增视频]我在<当HTML5来敲门>技术沙龙上做的一个关于HTML5游戏开发的分享
2011-02-27 11:03 1923我在2月26号的<当HTML5来敲门>技术沙龙上做 ... -
说说 iOS safari在retina屏下显示图像的原理
2011-02-24 17:05 8215我在 简析 HTML5 canvas在retina屏(视网膜屏 ... -
一个 HTML5 编写的 简谱播放程序
2011-02-17 15:14 3836一个 HTML5 编写的 简谱播放程序 : http:// ... -
试用了一下 HP touchPad ,有点小失望.
2011-02-16 12:57 2809我手里的这台机器是 工程样机. 从样机来看, 这台平板并不出色 ... -
简析 HTML5 canvas在retina屏(视网膜屏幕,如iphone4)设备上的优化(更新原理)
2011-02-11 04:01 9578随着iphone4 的推出, retina ... -
[更新,bug修复了]chrome开启canvas 2D GPU加速后, clearRect的一个严重bug.
2011-01-24 15:54 9817最新版的 chromium. 已经修复了这个bug 经过进一 ... -
我也来重复造个轮子吧 ,发布一个利用原型,在Javascript中实现类机制的简单框架: GT-Class
2011-01-07 11:23 3449我也来重复造个轮子吧 ,发布一个利用prototype(原型, ... -
关于"GPU加速"的简单问答.
2011-01-05 22:34 2744如今使用GPU来代替CPU进 ... -
求助:用这样的方式写Kissy组件,可行吗?(Kissy推荐的方式是怎样的?)
2010-12-29 09:43 2033看了Kissy自带组件的代码,又看了你在D2上的PPT , 看 ... -
简单聊一聊百度的开源JS库:Tangram
2010-12-24 12:20 9505简单聊一聊百度的开源JS库:Tangram 最近百度开源了 ...
相关推荐
WebKit是一个开源的渲染引擎,被广泛用于Safari、Chrome等浏览器,以提供高效、稳定和标准兼容的网页显示。在Duilib中集成WebKit内核,可以实现与现代网页技术的无缝对接,例如HTML5、CSS3以及JavaScript。 标题中...
10. **版本升级**:1.12.4是该插件的一个稳定版本,修复了一些已知的bug并增强了性能。在升级到新版本时,需要检查官方的更新日志,了解可能的API变化和新增特性。 综上所述,Bootstrap Select 1.12.4是Bootstrap...
在"bootstrap-select-1.13.0-dev"这个版本中,我们看到了一个开发版的源码,这通常意味着它包含了最新的特性、修复的bug以及可能尚未正式发布的改进。 1. **多选功能**:Bootstrap Select允许用户同时选择多个选项...
本文将详细讨论一个特定的JavaScript问题,即在Internet Explorer(IE)浏览器中使用`innerHTML`属性向`<select>`元素插入`<option>`标签时遇到的bug,以及如何解决这个bug以实现跨浏览器兼容性,包括IE、Firefox、...
这个问题可以通过使用JQueryUI的一个技巧来解决,即在IE6下显示弹出层时,将`SELECT`元素临时隐藏,以避免它遮挡其他内容。 其次,IE7及以下版本的一个问题在于,即使`SELECT`元素被`disabled`属性禁用,其内部的`...
今天在公司写了一个登录页面效果,让我碰到一个怪异的问题——“表单中的input[type="submit"]和input[type="reset"]按钮在iPhone的safari浏览器下圆角有一个bug”。下面我来简单的描述一下这个bug的样子: 初载入...
main:用于绘制敌人与子弹,因为这两个基本上会一直变,需要一直重画。 tower:用于绘制塔,塔基本上画上去后,不会动,最多也是会给擦出。 select:用于绘制塔的选择区域,攻击范围等,会根据用户的操作而进行重...
当你在 .css() 和 .animate() 中使用 CSS 属性时,jQuery 会自动根据浏览器类型来设置一些前缀,例如 .css("user-select", "none") 在 Chrome/Safari 会变成 "-webkit-user-select", 在 Firefox 变成 "-moz-user-...
-修正extjs最新版本(v3.2.2)中的一个bug,如果下拉列表中存在两个相同的Text,则SelectedValue返回值永远是第一个Text的值(feedback:ben.zhou)。 -应用补丁#6593, #6621(feedback:vbelyaev)。 +修正IE7下Grid分页...
jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令...
-修正了使用IFrameUrl的Tab在切换过程中会重复加载的问题,这是一个在v2.1.6引入的问题(feedback:eroach)。 -修正了启用AutoPostBack的Grid,其RowClick会覆盖LinkButtonField, HyperLinkField, CheckBoxField的...
这个版本号(v1.7.2)表示这是一个经过多次迭代和优化的稳定版本,可能包含了一些bug修复和性能提升。 在实际应用中,开发者需要将这个组件的样式和脚本文件引入到HTML页面中,并按照提供的API或示例代码配置和调用...
这段代码包含一个按钮(`.btn.dropdown-toggle`)和一个下拉菜单(`.dropdown-menu`)。按钮内的`<span class="caret"></span>`是用来显示下拉箭头的。每个`<li>`元素代表一个选项,可以通过`value`属性关联相应的值...
1. **多选支持**:Chosen允许用户在一个下拉框中选择多个项,通过复选框的形式展示,使得多选操作更加直观。 2. **搜索功能**:在大型选项列表中,Chosen提供了一个内置的搜索框,用户可以实时搜索并过滤出匹配的...
- IE存在一个bug,即Select控件永远处于最上层,且所有CSS对Select控件不起作用。 9. **Form中的Label标签** - IE支持Form中的Label标签,包括图片和文字内容。 - FireFox不支持包含图片的Label,点击图片不会...
10. 锚点的作用和创建方法:锚点通过标签的name属性定义,用以在页面内创建一个可以跳转的链接点,方便用户快速定位页面内容。 11. 浏览器测试和内核:在进行前端开发时,需要在多个浏览器上测试页面,常见的浏览器...
10. **IE6常见BUG及解决方案**:双边距BUG、3像素问题、超链接hover失效、z-index问题、PNG透明问题、min-height问题、select遮盖问题、1px宽度容器问题等,通过各种CSS技巧或JavaScript解决。 11. **标签title与...
10. **IE6常见bug及解决方法**:包括双边距问题、3像素问题、超链接hover失效、z-index问题、PNG透明问题、min-height问题和select遮盖问题。 11. **title与alt属性**:title提供鼠标悬停时的提示信息,alt是在图片...