标签归档:bug

IE的“c00ce56e”bug

很简单的一个jQuery AJAX请求文件,IE8下报:

Could not complete the operation due to error c00ce56e.

检查网上都说是编码问题,不过写的不是太明确,因为我们服务器的文件编码都已经是UTF-8
最后找到说明

The problem occurs when setting the charset of a response to a XMLHttpRequest to utf8 instead of UTF-8 or ISO-8859-1 instead of ISO8859_1. IE7 is very strict on naming of the charsets.

“ISO8859_1” is the canonical representation of the Latin-1 character encoding string in the Java language and class libraries. The standard that is defined by the Internet Assigned Numbers Authority, however, is “ISO-8859-1”, which is not an accepted alias.

For more information refer: http://support.microsoft.com/default.aspx?scid=kb;en-us;304625

于是打开nginx的配置文件,把所有“utf8”替换成“UTF-8”,问题解决

IE8回车提交表单的bug

这回中枪的不是IE6了,更悲剧

问题发生的条件:

表单所在容器载入时是display:none,且表单内包含超过一个的文本框
这时候在表单内按回车就无法触发表单的submit事件(只有一个文本框时正常)

如果载入时是display:none的以后再怎么显示也没有用了

解决办法:

  • 载入DOM完毕后再隐藏元素
    这个应该是根本解决办法,但是实际操作起来很麻烦。
    首先用户可能看到不期望的显示内容闪烁,然后在一些场合下先显示会导致JS计算占位出问题(例如很多带Overlay的弹出层显示实现)
  • 强制绑定keydown事件
    判断浏览器的版本,根据需要强制绑定回车键按下的事件处理
  • 不处理
    这是我目前的处理方法,不纵容M$,哈哈

同样的bug还存在于目前最新版本的IE9测试版本中
不得不说IE真是一个奇葩,还是系列的

参考文章:
http://stackoverflow.com/questions/1427912/in-ie8-enter-key-in-a-form-does-not-work
http://stackoverflow.com/questions/964734/hitting-enter-does-not-post-form-in-ie8

[温故而知新]再谈IE中li之间高度空隙的问题

时隔两年之后,再次碰到IE6、IE7下li高度占用的bug,2008年的文章在这里

之前的老办法还是能解决问题的,然后顺便研究了一下。

首先是症状的发生条件:

  • 1、IE6、IE7
  • 2、li内嵌其他容器,不仅限于超链接,我测试过span等也有此问题
  • 3、高度低于某个值,这个值我没有严格测试过,但是我把li的高度设置成30px的时候没问题,18px的时候就有问题

问题解决办法:

  • 1、给li附加样式

    li.classname {
    float: left;
    width: 100%;
    }
  • 2、将li设置成inline,给内嵌容器设置宽度

    li.classname {
    height: 18px;
    line-height: 18px;
    display:inline;
    }
    li.classname a {
    display: block;
    width: 100%;
    }

IE中li显示高度的bug

具体表现为:
当li内嵌套其他容器时,在IE下实际占用的高度(offsetHeight)会比内嵌容器的高度多出几像素,而且多出来的像素数在IE6和IE7下似乎还不太一样
此时li的样式:


解决方法也很简单,只要添加float即可,在我的应用中还加了宽度,等于是变相实现了display:block的效果:

参考文章:http://www.css88.com/article.asp?id=427