奇怪的BUG
熟语说“常在河边走,哪能不湿鞋”,在现实中我想说:“代码写多了,总会遇到奇怪的bug”,遇到bug不可怕,可怕的是不自己不知道这么解决,有些bug能当时解决,有些在自己知识水平提高后知道如何解决。还有些依然迷茫,在这做些总结归纳,顺便请教下牛人也是好的。
一、在一次调试样式的过程中,发现有个button死活不能居中,使用各种设置,如text-align等均无效,而在另一个页面中却很正常,百事不得其解,相同的样式设置但是就是无效,让人摸不住头脑。对于这样的问题,只是单独某个页面会出现,但是有部分页面不出现,那这个问题还是比较好定位的,比较下两个页面的异同就可以了,通过排除各种相关因素后发现,在不能居中的html中少了一个奇怪的头<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">。
在加上这个头部标签后发现正常显示,最后查找资料才知道这个是有用的信息头部,去掉后的默认版本不一样导致的。但是这个问题比较不容易发现的就是我们一般会将这样的头部去掉,忽略掉这个头部。
二、我做了个列表,然后想做一个全选的功能,然后就在头部使用一个checkBox来设置,当时的jquery写法是这样的:$(v).attr("checked", true);,当我信心满满的做完后发现一个bug,在我设置为false的时候能够起效果,但是当我设置为true时,下面的列并没有打上勾,然后我跟踪这个元素,发现这个元素的check确实设置为true了。但是就是没有打上勾。一直不明白为什么?通过在网上的列子也是一样的写法,并没有什么问题。那究竟是哪里出了问题。最后请教前段的同事才发现在原来docoment的属性是有两种的。还有一个是设置显示方式的,只有通过这个设置方式:$(v).prop("checked", true);chechBox才能显示打勾的样式。
ttributes和properties之间的差异在特定情况下是很重要。jQuery 1.6之前 ,.attr()方法在取某些 attribute 的值时,会返回 property 的值,这就导致了结果的不一致。从 jQuery 1.6 开始, .prop()方法 方法返回 property 的值,而 .attr() 方法返回 attributes 的值。例如, selectedIndex, tagName, nodeName, nodeType, ownerDocument, defaultChecked, 和 defaultSelected 应使用.prop()方法进行取值或赋值。 在jQuery1.6之前,这些属性使用.attr()方法取得,但是这并不是元素的attr属性。他们没有相应的属性(attributes),只有特性(property)。
三、jquery的日期转换问题。当在chorme中使用new Date("2015-01-01")是没有问题的。但是在IE中会发现并没有转成日期,而是一个undefine,最后发现在IE中这个日期格式是不被认可的。需要使用new Date("2015/01/01")格式。
四、一个方法耗时方法没有完全执行完全,由于有个方法要给整个公司员工发一封考勤邮件,但是这个方法在实际使用时发现总是执行到一半就中断执行了。通过日志发现这个方法最多只能执行两分钟的时间,然后就引发异常:Asp.Net正在中止线程引发的问题。
Asp.Net做的一个同步程序,同步的方法是通过JQuery的Ajax调用,同步过程大概要执行20多分钟,程序部署到服务器后执行一段时间后就弹出执行失败的对话框,日志记录的错误信息是“正在中止线程”。
查错过程:
1、根据“AspNet 正在中止线程“进行搜索,得到的结果基本都是跟”Response.End“有关的,但我的代码中没有Response.End,所以基本可以排除;
2、因为使用JQuery的Ajax,所以猜想会不会是因为Ajax超时导致,修改代码将返回状态弹出:发现返回的status为”error“,也尝试过将timeout设置为一个较大值,发现问题依然存在,所以可以排除是JQuery Ajax超时;
3、使用Fiddler2进行监控,发现执行一段时间后报了500错误,显示的错误详细信息如下图:到了这一步就好办了,可以知道是httpRuntime超时了,配置Webconfig就可以了,如下图:设置好好后发布到服务器,再次运行程序,问题解决。
奇怪的是在本机运行的时候即使没有设置executionTimeout也不会出现问题,原因是在本机的Webconfig中的compilation节点的有个debug属性设置为true,发布后的Webconfig中的compilation没有debug节点,当debug属性为false时,httpRuntime的executionTimeout属性才会生效。
五、这个是我到现在也无法解决的问题。我有一个项目使用的是IE8的浏览器,而且不能更换浏览器和系统。但是这个程序在运行中总是会不定时的发生卡顿现象,突然用着的程序被卡着几秒,而且是无规律的的。有的时候严重有的时候没问题。即使是我使用了前台开ActiveX控件来跟踪前台日志也未发现原因,应为在日志中时间总是很正常的。但是具体到使用中就会发现这个bug。这个问题一直困扰着这个项目。后来由于版本升级等原因,到现在依然未能解决。我一直耿耿于怀,因为这个唯一的一个我一直无法搞定的bug,以后估计也不会有机会搞定它了。只能猜测可能跟环境有关系,在大辐射场景工作,还是就是电脑原因。期待点播。
奇怪的BUG的更多相关文章
- 奇怪的bug(ant-design)
ant-motion模板代码启动报错. 多了一层 import 会导致 less 编译的顺序发生变化,很奇怪的问题,还需要再深入看看.目前 ant-d.less 可以先改成这样来解决: + @impo ...
- 小程序制作中 一个奇怪的bug
事情是这样的:原一个购物车 合并本地数据和服务器 数据方法如下 ,正常测试没有问题,当每次重新登录,会调用到这个方法,就会莫名其妙的卡主,debug 发现 a1.length =77731508 导致 ...
- 奇怪的bug:javascript不执行
背景:有人想要个简单的js效果,点击某个菜单,其他菜单收起. 说了下思路,结果~~ 只好直接写了一个,代码如下: <!DOCTYPE html> <html> <head ...
- 奇怪的bug,不懂Atom在添加markdown-themeable-pdf,在配置好phantomjs的情况下报错
本来打算用一下atom但是导出pdf报错,可是在预览的情况下就没有问题,顺便吐槽一下谷歌浏览器自己的markdown在线预览插件无法适配,用搜狗搭载谷歌的插件才能导出pdf,一下感觉逼格少了很多,等忙 ...
- ComboBox可搜索下拉框的使用注意事项,简单记录以及我遇到的一些奇怪的bug
前几天做一个react的项目的时候需要用一个可搜索的下拉框ComboBox,上代码: <ComboBox // className={comboxClassName} items={storeA ...
- 配置进程外Session 同时解决一个奇怪的BUG 因为SQLserver 服务器名不是默认的.或者localhost而引发的一系列问题
用公司的电脑学习如鹏网的视频,开发一个项目,用到了进程外session,因为公司电脑SQLServer 是2008 服务器名称是. 然后参考这篇文章进行设置进程外session 很顺利 完成了设置. ...
- 奇怪的transform bug
对一个元素使用transform:rotate 进行旋转,造成: 父元素的背景图位置偏移,往下降,背景图也会变模糊一些 造成重绘,导致该元素后面的兄弟元素受到影响,变得模糊,并且无法遮盖住父元素的背景 ...
- 移动端一个奇怪的触摸bug
这两天遇到一个很奇怪的bug,在移动端,一个页面里所有的input框都不能点击,我查了一下,里面的没有设置readonly属性,只要页面滚动一下就可以用了,而且,只要我在真机测试的时候,f12开发者模 ...
- bug: 在缓存行高时,总是记录错误.
一,现象: 1.在 cell 中添加了一个 label, 并对 label 设置了 attributeText, 结果滑动的过程中,cell 的高度总是不对,多次出现下一个 cell 覆盖上一个 ce ...
随机推荐
- jquery修改table某列的值
开发的过程中,我们经常会遇到一些数和值之间的转换,比如本例:学部:1.小学,2.初中,3.高中;当然实现方法很多种,可以后台代码,也可以使用脚本... 修改前: 修改后: 代码: $("#t ...
- Hadoop streaming模式获取jobconf参数
1. 像map_input_file这种环境变量是在hadoop-streaming.jar程序中设置的,所以无需-cmdenv map_input_file参数就可以在php中直接引用,如$var= ...
- leaflet创建简单地图
一.leaflet介绍: 1.Leaflet 是一个为建设移动设备友好的互动地图,而开发的现代的.开源的 JavaScript 库.它是由 Vladimir Agafonkin 带领一个专业贡献者团队 ...
- 记录参加“牛津计划.Docker在线黑客松”比赛的过程
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- [转]如何拷贝一个 SQL Server 的表
这篇短文将介绍几种拷贝 SQL Server 表的方法.第一种方式是最简单的在同一个数据库里将表拷贝到另外一个表.你需要记住的是,拷贝表的时候并不会拷贝表的约束和索引.下面是代码模板和简单的使用方法: ...
- Mac 识别NTFS移动硬盘
下载工具 TUXERA NTFS 2014
- MySQL JDBC 出现多个 SHOW VARIABLES 语句。
一次偶然的机会,show processlist 的时候,发现有个 Client 一直在执行 "mysql-connector-java-5.1.21 ( Revision: ${bzr. ...
- Swift语言的基础详解
1.1.关于swift · Swift 是一种适用于 iOS 和 OS X 应用的全新编程语言,它建立在最好的 C 和 Objective-C 语言之上,并且没有 C 语言的兼容性限制.Swift 采 ...
- PHPBB公布新的维护版本
9月28日,PHPBB官方网站公布了新PHPBB的最新消息.这个版本命名为:"Richard 'D¡cky' Foote",版本号为3.0.12.据官方的说明,“这个版本是一个维护 ...
- android 启动过程
android系统启动的时候首先会启动Linux的基础进程,加载Linux kernel启动初始化(init)进程. 接着,回启动Linux deamon(守护进程)会启动以下的内容: ①启动USBd ...