`
alricren
  • 浏览: 28626 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

IE8修了个bug Prototypejs出了个bug

阅读更多

今天在IE8上发现了一个问题。用js(用了prototypejs)创建的element,设置了它的class以后,浏览器没有“正确”的对其使用css样式。

 

创建element的语句如下:

 

var wrapper = new Element('div', { className: 'wrapper' });
 

标准地设置element的class属性应该是:

 

 

ele.setAttribute('class', 'wrapper');

 

但是IE6, IE7都有BUG,以上语句不起作用,但以下语句可以:

 

 

element.setAttribute('className', 'wrapper');
  

prototypejs替“我们”解决了这个不兼容的问题,将setAttribute包了一层,变成了writeAttribute。writeAttribute中做了一个自动的映射,“我们”统一都使用className作为key,如果不是IE,那么会把'className'映射成'class',new Element(xxxxxx)内部是用了writeAttribute来设置Attribute的。所以,在IE8出来以前,天下太平......

 

好了,现在IE8来了,MS的工程师们终于发现了这个BUG,并把它给修正了... 现在setAttribute('class', xxx)有效,而setAttribute('className', xxx)无效了 @_@

 

prototypejs要修正这个bug,得对IE的版本分类讨论了... 不过我发现

 

 

var ele = new Element('div');
ele.className = 'wrapper';

 

在主流浏览器上都有效。

 

额外说一句,在IE8中, margin: 0 auto; 需要在其父节点的样式中定义text-align: center后才正常显示......

 

分享到:
评论
5 楼 alricren 2009-03-30  
lifesinger 写道
一直用 el.className 解决兼容性问题哦

margin: 0 auto 在ie8下失效的问题,是因为某些插件(比如CompanionJS)或其它因素触发了Quirks mode(IE 5.5的bug)


页面的DTD是没有问题的,反正一开始表现的很奇怪,页面第一次加载的时候是正常的,F5之后就不正常了,异常的表现确实就如Quirks mode表现的一样。还有,我确实装了CompanionJS... 具体原因我再查查
4 楼 lifesinger 2009-03-30  
一直用 el.className 解决兼容性问题哦

margin: 0 auto 在ie8下失效的问题,是因为某些插件(比如CompanionJS)或其它因素触发了Quirks mode(IE 5.5的bug)
3 楼 zbm2001 2009-03-29  
playfish 写道
额外说一句,在IE8中, margin: 0 auto; 需要在其父节点的样式中定义text-align: center后才正常显示......


囧囧囧囧囧囧囧囧囧囧....真的要这样....?


你提到的这个应该是IE旧版本的 Quirks mode下的解析BUG,
可查一下IE8下是否HTML文档DTD声明是否规范

否则IE8应该不会出现这种解析BUG
2 楼 luolonghao 2009-03-27  
原来是你啊
1 楼 playfish 2009-03-27  
额外说一句,在IE8中, margin: 0 auto; 需要在其父节点的样式中定义text-align: center后才正常显示......


囧囧囧囧囧囧囧囧囧囧....真的要这样....?

相关推荐

    prototype_PrototypeJS1.6_

    9. **兼容性**:考虑到浏览器差异,PrototypeJS通常会提供跨浏览器的解决方案,确保在多个版本的IE、Firefox、Safari、Chrome等浏览器上正常运行。 10. **版本改进**:1.6.1相较于1.6可能包含了一些bug修复、性能...

    Bootstrap-datetimepicker先天bug修复,兼容IE6+

    在修复这些bug时,我们需要关注以下几个关键点: 1. **CSS兼容性**:IE6及以下版本对CSS的支持非常有限,例如不支持浮动定位、透明度、圆角边框等。因此,需要使用条件注释或者专门针对IE的CSS hack来确保日期时间...

    ie9.zip_ie7.js

    标题中的"ie9.zip_ie7.js"表明这是一个与Internet Explorer浏览器相关的压缩文件,特别是针对IE9版本,并且可能包含一个名为"ie7.js"的脚本文件,该文件旨在为低版本的IE浏览器(如IE6、IE7、IE8)提供兼容性支持。...

    ie6-10兼容性解决-js.zip

    6. **Function.prototype.call和.apply**:IE6-8在某些情况下对这两个方法的实现有bug,可能需要额外的处理。 7. **CSS3属性**:IE9开始支持一些CSS3属性,但IE6-8则需要特殊的库或脚本来模拟。 8. **...

    ie各版本兼容解决插件

    在这种情况下,ie7.js是一个知名的库,它通过模拟新的DOM方法、修复CSS渲染bug以及提供其他兼容性补丁,帮助提升IE6-8对现代Web标准的支持。 ie7.js插件的核心原理是通过JavaScript模拟实现一些IE较新版本中才有的...

    Prototype Lazyload 图片延时效果代码

    Prototype Lazyload 图片延时效果 JS...支持 prototype 的 延时效果代码很少,自己写了一个简单的,可能有一些Bug 基本支持 IE6、IE7、IE8、IE9、FF、Chrome、Safari Prototype 1.7.0 (1.6.0也可以只是IE9不支持)

    webpack-ie9-bug

    "webpack-ie9-bug"这个存储库正是为了演示和解决在IE9中遇到的特定错误而创建的。 在JavaScript的世界里,IE9是个特殊的浏览器,因为它不支持许多现代JavaScript特性,如ES6的箭头函数、Promise、模板字符串等。...

    使用prototype.js 的时候应该特别注意的几个问题.

    在使用prototype.js库时,开发者需要注意一些特定的问题以避免潜在的错误或不期望的行为。以下是一些关键点的详细说明: 1. **String.prototype.camelize**: `camelize`方法用于将字符串转换为驼峰式命名,常用于...

    PROTOTYPE 1.5.1 RC1

    "Prototype 1.5.1 RC1" 是一个JavaScript库的版本,专注于提供Web开发中的对象原型扩展和AJAX功能。这个版本是Release Candidate 1(RC1),意味着它是正式版发布前的最后一个测试版本,通常包含了一些重要的修复和...

    大名鼎鼎SWFUpload- Flash+JS 上传

    采用了命名空间以兼容其它JS的库 (例如 jQuery, Prototype, 等等) 对FLASH8和FLASH9播放器的支持 SWFUpload背后的设计思想和其它基于Flash的上传工具是不同的。它将浏览器的中UI交给开发人员来控制。开发人员能够...

    终于解决了IE8不支持数组的indexOf方法

    如果尝试在IE8中直接使用`indexOf`,浏览器会抛出一个错误,因为这个方法在IE8中并未定义。 为了解决这个问题,开发者通常需要通过polyfill(垫片)的方式来为旧版浏览器提供缺失的功能。在提供的代码片段中,就是...

    asp.net下String.prototype.split()的兼容问题

    IE的String.prototype.split()函数bug 脚本: “a:b:c”.split(/(:)/)  Firefox输出: [“a”,”:”,”b”,”:”,”c”] IE7/8(含IE9兼容的模式)输出:  a,b,c IE9 中文本框中出现了 \n时 会把他保留 需要去掉 而...

    JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案

    然而,在某些IE浏览器版本中,其内置的`fixed column`功能存在一些bug,导致冻结的列内容无法正常显示。这个问题主要出现在IE10和IE11等较旧的IE浏览器版本中。 **问题描述** 当表格列数量超过屏幕宽度时,表格会...

    jquery-3.2.1.js 、 jquery-3.2.1.min.js 【jquery包,最新的截止到2017-11-1】

    - jQuery 3.x系列开始,不再支持IE6/7/8,更加专注于现代浏览器的兼容性和性能。 4. **jQuery与其他库的比较:** - **与原生JavaScript的比较**:jQuery将JavaScript的很多复杂操作简化,使得新手也能快速上手,...

    JS版百度编辑器可直接使用

    - **良好的兼容性**:支持主流的浏览器如Chrome、Firefox、Safari、Edge,同时兼容IE8及以上的版本。 - **响应式设计**:能自动适配不同设备和屏幕尺寸,确保在手机、平板电脑等移动设备上的良好显示效果。 2. **...

    scriptaculous-js-1.7.0.tar.gz(part2)

    总的来说,Scriptaculous-js-1.7.0.tar.gz(part2)这个压缩包对于想要使用Scriptaculous框架开发富交互Web应用的开发者来说,是一个宝贵的资源。它提供了许多实用的组件和工具,可以帮助开发者快速构建具有出色用户...

    js toFixed()方法的重写实现精度的统一

    但凡用过js 中的toFix() 方法的, 应该都知道这个方法存在一个小小的BUG。 在IE 下和FF 下对于小数的进位有点不同。 例如( 0.005)在ie 下 toFix(2)=0.00. 在FF 下 toFix(2)=0.01. 这样就会造成数据的差异。 我们...

    javascript之对系统的toFixed()方法的修正

    0.009.toFixed(2)本该返回0.01的结果,可它却返回了一个0.00,这是这个方法的一个BUG,且这个方法对客户端的JS版本要求有点偏高,至少在IE5.0里这个方法用不起来,所以我写了上面的一段修正代码,并且还解决了这个...

    ElementUI本地引用资源V2.15.14

    8. **更新和维护**:由于你使用的是特定版本(2.15.14),随着时间推移,ElementUI 可能会发布新版本,包含新的功能和 bug 修复。要保持项目与时俱进,记得定期检查更新并更新本地引用资源。 总之,ElementUI 本地...

    基于 Ajax 的聊天室

    最近利用闲暇时间,作了个简单的聊天室,该聊天室使用 prototype.js (v1.4) 类库,主要应用Ajax技术、Application变量,做到小型架构,页面无刷新,[b]无数据库[/b],能查看在线用户等特点。 <br>刚开始打算用...

Global site tag (gtag.js) - Google Analytics