当前标签: bug

innerHTML的一个BUG——丢失绑定事件04/23/2009

在编写一个后台的小应用的过程中,我碰到了这个bug,由于该系统之前已经开发完成,在验收阶段,客户要求加入这个快速输入的小功能,省却重复输入之烦恼。为了让程序在修改了千疮百孔之后依然显得可维护性很强,我不得不考虑动态创建元素。于是,在我快乐的敲入完代码以后,快乐的拿起鼠标点击生成的链接的时候。。。。点击链接的时候。。。。我点,我点。。。我连续的点击到我的鼠标明显的感到有意见的时候,程序都没有按照我的意愿去执行。什么原因呢?我们来看看我之前写的那段代码:

竟有如此美文,尽阅之 »

| 2条评论分类: web前端编程 标签:  

JS对IE下表单元素name和id不同步的取值异常BUG03/08/2009

随着小生与IE的交往越来越深入,这个并不陌生的老朋友的坏脾气也一天一天的被挖掘出来,尽管她试图遮遮掩掩,蒙混过关……
这次的bug出在一个表单验证上,我用javascript对用户的输入进行客户端验证,由于需要在之前已经完工的表单上加入一个新的元素来显示一些额外信息,意外的,我将这个元素的id取了一个和之前已经存在的表单元素的name相同的名字,我的表单验证使用document.forms['form_name'].elements['element_name']来定位元素,因此未给之前的任何元素id属性。呼呼!bug就这样出现了,当我们验证之前元素的checkd属性时,总是返回undefined,这实在太奇怪了!我们将其与SVN中的上个版本比较,发现只是增加了一个元素,回溯到上个版本,一切正常,问题就在这个元素上了,我们去除了这个新增元素的id属性,表单验证的js代码又能工作了。
     今天,我仔细研究了一下这个问题,发现:只要表单元素的id和name值不同,即会引发javascript取元素不准确的bug,最后我还发现form.elements['element_name']取表单元素如果id和name相同的值却指向不同的元素,该方法居然只能返回undefined,不管在ie还是firefox、opera下。
     看我做的一个示例来重现这个bug吧,我故意将第一个元素的id和第二个元素的name值设为相同,第二个元素的name等于第一个元素的id,而第三、四两个元素的设置是正常的,接着使用了三种方法:getElementById、getElementsByName、elements来获得value,结果在ie6、ie7下,无论是使用getElementById还是getElementsByName都不能取到第二个元素(文本框)的value,在ff、opera下却都能正常工作。

点击查看ie下name和id不同步导致的js取值异常的demo

| 2条评论分类: web前端编程 标签:  

一个下划线引发的IE6不能登录的问题03/06/2009

最近的一个项目中,出于安全和一些特殊因素的各种综合性考虑(哈哈,这个句式神似某后现代作家),我将后台的目录进行“非常规”命名,测试后一直使用正常,不过似乎也一直有反映后台登录多次才能成功,可我怎么测试怎么都是没有问题的,而且屡试不爽,根本就没有问题嘛!于是很是怀疑这厮的人品问题,但问题还是不久后的今天在某同事的机器上上演了!“历史与现实总是惊人的相似!”TA使用的IE6,之前也登录该后台多次,均未发现任何问题,今天却是个特殊的日子,TA大声疾呼,登录失败了。这让正在喝水的我,出于极其好奇、本着对上帝负责的态度,飞奔至其电脑前,输入我的超管帐号和密码,不时,居然又回到了登录界面,我确信我的各项输入都是正确的,怎么回事呢?大家都陷入了迷思,在我犀利的目光注视和扫描下(呃,有点儿矛盾),我发现后台的地址/xxxx_xxxx/login.php,居然成了/xxxx%5Fxxxx/login.php,即被urlencode了,哦!问题就出在这里了,因为我们的登录验证会严格判断登录来源,显然xxxx_xxxx不等于xxxx%5Fxxxx,所以,就认为非法用户登录了,被踢!后来,经过测试,我们在后台进行urldecode,以期不再出现%5F的情况,事实上,问题并不是出现在这里,而是IE6,该死的IE6会自作聪明的进行编码,即将下划线转成%5F,而且经多次测试,还是随机的转化的,所以就让管理员时而能正常登录,时而又耍小脾气,不让人登录,这显然是一个糟糕的事情,发现了问题之所在以后,火速改了后台地址,问题得以解决。
回头看看本文,发现多处使用了感叹号,可见本人对于这个BUG的无语程度,绝非莫名。。。

| 2条评论分类: 我爱PHP 标签:  

绝对定位的div层,别再让flash盖住了11/22/2007

今天一个图片滚动的案子,说是想点击放大了看,偶就用我博客的那个图片插件——highslide来整,这个JS的东西效果很好!
很顺利的移植上去,可是有一个flash的广告老把放大后的照片给遮住,后来在网上一搜,只要加一个参数就OK了。

后来了解了下wmode的具体意思

wmode 属性/参数

值: Window | Opaque | Transparent
模板变量:$WM
说明: (可选)使您可以使用 Internet Explorer 4.0 中的透明 Flash 内容、绝对定位和分层显示的功能。此标记/属性仅在带有 Flash Player ActiveX 控件的 Windows 中有效。

“Window”在 Web 页上用影片自己的矩形窗口来播放应用程序。“Window”表明 Flash 应用程序与 HTML 层没有任何交互,并且始终位于最顶层。

“Opaque” 使应用程序隐藏页面上位于它后面的所有内容。

“Transparent”使 HTML 页的背景可以透过应用程序的所有透明部分进行显示,这样可能会降低动画性能。

“Opaque windowless” 和“Transparent windowless” 都可与 HTML 层交互,并允许 SWF 文件上方的层遮蔽应用程序。这两种选项之间的差异在于 “Transparent”允许透明,因此,如果 SWF 文件的某一部分是透明的,则 SWF 文件下方的 HTML 层可以透过该部分显示出来。
如果忽略此属性,默认值为 Window。仅适用于 object。

文中说的很清楚了,就是默认的window值不允许自己的上方有层遮蔽~终于明白了

| 2条评论分类: web前端编程 标签:  

修正bo-blog 2.1.0中UBB正则替换的一个小BUG11/03/2007

偶用(确实是偶尔)BO-BLOG自带的PHP代码高亮功能,居然发现了其中的一个略微不完美之处,就是在代码的最后会多出一个分号??;,看截图
竟有如此美文,尽阅之 »

| 发表评论分类: 我爱PHP 标签:  

PHP界大牛们
反人类不分昼夜
牛掰级朋友圈子