浏览器之间的HTML差异
我们是否知道在不同的浏览器中处理HTML标记/属性有何不同?例如,我曾经看到一个页面,其中输入标签的最大长度字段设置为" 2o"。 Firefox和Opera会忽略" o",并将最大长度设置为2,而Internet Explorer会完全忽略该字段。你知道更多吗?
(注意:因为这可能是一个列表,所以如果差异的通用名称是粗体字,那会很好,例如:标签属性中不同的不稳定值处理)
解决方案
回答
查看http://www.quirksmode.org/
回答
如果我们使用javascript编程,那么我能提供的最佳建议是使用javascript库而不是尝试自己编写。这些库都经过了良好的测试,并且更有可能遇到极端情况。
Scriptalicious http://script.aculo.us/
jQuery http://jquery.com/
微软AJAX http://www.asp.net/ajax/
Dojo http://dojotoolkit.org/
原型http://www.prototypejs.org/
YUI http://developer.yahoo.com/yui/
回答
真正让我烦恼的是大多数浏览器中IE损坏的document.getElementById javascript函数,这将为我们提供具有我们指定的ID的内容,即使有一些东西,IE也乐于为我们提供具有name属性值的内容稍后在文档中提供我们要求的ID。
回答
错误清单
Web开发人员已经编译了一些非常全面的列表。我认为编译资源列表比复制这些列表更好。
- http://www.positioniseverything.net/
- http://www.richinstyle.com/bugs/table.html
- http://www.quirksmode.org/(由Kristopher Johnson提到)
Java脚本
我同意Craig的观点,最好使用处理浏览器之间差异的库来编程Javascript(以及简化诸如命名空间,AJAX事件处理和上下文之类的事情)。这是Craig的答案(在此页面上)。
CSS重置
CSS重置确实可以简化Web开发。它们会覆盖浏览器之间略有不同的设置,从而为我们提供一个更通用的起点。我喜欢Yahoo的YUI Reset CSS。
回答
Do you know of any differences in handling HTML tags/properties in different browsers
这个问题是否要求提供有关所有差异的信息,包括DOM和CSS?有点大话题。我以为OP是在专门询问HTML行为,而不是其他所有问题。
回答
I once saw a page with a input tag with a maxlength field set to "2o".
在这种情况下,我们正在谈论的是无效代码。 maxlength属性不能包含字母,只能包含数字。
浏览器对无效代码的处理方式千差万别,我们可以亲眼看到。
如果我们真的是在问"面对无数种原因中的任何一种破坏了的HTML代码,所有不同的浏览器会做什么?",这就是疯狂。
通过使用有效的代码,我们可以大大减少问题空间。
因此,请使用有效的HTML。然后剩下两个主要的问题区域:
- 浏览器错误-浏览器如何遵循HTML标准以及它的错误之处
- 浏览器默认设置的差异,例如它给正文的填充/边距数量
回答
HTML模式下XHTML的解析不一致
HTML解析器并非旨在处理XML。
如果将XHTML文档用作" text / html",并且未遵循兼容性准则,则可能会得到意外的结果。
空标签是问题的一种可能来源。 <tag />和<tag> </ tag>在XML中是等效的。但是,HTML解析器可以两种方式解释它们。
例如Opera和IE将<br> </br>视为两个<br>,而Firefox和WebKit将<br> </br>视为一个<br>。