简短版本:在Web开发人员和Web开发人员的最终用户使用的所有浏览器中,最简洁,最易维护的技术是什么,用于一致的演示和AJAX功能?
IE 6,7,8
Firefox 2,3
苹果浏览器
谷歌浏览器
歌剧
长版:我写了一个针对其他Web开发人员的Web应用程序.我希望我的应用能够在演示和AJAX行为中支持主要的Web浏览器(以及Google Chrome).
我开始使用Firefox/Firebug,然后在IE 6和7下为一致的样式添加条件注释.接下来,令我惊讶的是,我发现jQuery在IE中的行为并不相同; 所以我改变了我的Javascript,使用条件和不太纯粹的jQuery 在FF和IE上可移植.
今天,我开始在Webkit和Google Chrome上进行测试,发现不仅样式与FF和IE都不一致,而且Javascript根本没有执行,可能是由于语法或解析错误.我期待一些CSS工作,但现在我有更多的Javascript调试要做!在这一点上,我想在为所有情况编写成堆的特殊情况之前退一步思考.
我不是在寻找灵丹妙药,只是为了让事情尽可能易于理解和维护.如果没有服务器端智能,我更喜欢它; 但是,如果有一个优点,例如,检查用户代理然后将不同的文件返回到不同的浏览器,那么如果Web应用程序的总体可理解性和可维护性较低,那就没问题了.非常感谢你们!
我处于类似的情况,正在开发针对IT专业人员的Web应用程序,并且需要支持相同的浏览器集,而不是Opera.
到目前为止我学到了一些一般性的东西:
经常在尽可能多的目标浏览器中进行测试.确保您在开发计划中有时间.
Toolkits可以帮助您获得跨浏览器支持的一部分,但最终会遗漏某些浏览器上的内容.计划一些时间来调试和研究特定浏览器的修复程序.
如果您需要的东西不在工具包中并且找不到免费的代码片段,请花一些时间编写封装依赖于浏览器的行为的实用程序函数.
了解已知的浏览器错误,以便您可以围绕它们引导您的实施.
我学到了一些更具体的事情:
仅使用基于用户代理的条件代码作为最后的手段,因为"相同"浏览器的不同代可能具有不同的功能.相反,首先测试符合标准的行为 - 例如,if(node.addEventListener)...
然后是常见的非标准功能 - 例如,if(window.attachEvent)...
然后,如果必须,请查看用户代理以获取特定浏览器类型和版本号.
知道DOM何时"准备好"进行脚本访问在几乎每个浏览器中都是不同的.一个好的工具包将为您抽象.
几乎每个浏览器都有不同的事件处理程序.一个好的工具包将为您抽象.
使用document.createElement和element.setAttribute创建DOM元素,尤其是表单控件或具有属性的元素,可能会非常棘手.虽然不是标准的(有点令人讨厌),但使用包含HTML的字符串的node.innerHTML似乎在浏览器类型中更可靠.我还没有找到一个工具包,可以让你使用element.setAttribute向IE中的表单元素添加一个'name'.
CSS差异(和错误)与JS差异同样重要.
"核心"Javascript功能(字符串,日期,RegExp,数组函数)在浏览器中看起来非常可靠和一致,特别是相对于DOM/CSS/Window函数.在每个平台上,语言并不完全不同,这有一点小小的乐趣.:-)
我还没有碰到任何特定于Chrome的JS错误,但它始终是我测试的第一批浏览器之一.
HTH
Chrome实际上与Safari有点不同,它使用完全不同的javascript实现,并且已经报告了原型和jquery的问题.我现在不会担心太多,它仍然是浏览器的早期测试版本,这种不一致可能会被视为错误.这是错误报告.