简短版本:在 Web 开发人员和 Web 开发人员的最终用户使用的所有浏览器中实现一致的呈现和 AJAX 功能的最简洁和最可维护的技术是什么?
- IE 6、7、8
- 火狐 2、3
- Safari
- 谷歌浏览器
- 歌剧
长版:我写了一个web app aimed at other web developers .我希望我的应用在演示和 AJAX 行为方面都支持主要的网络浏览器(加上 Google Chrome)。
我从 Firefox/Firebug 开始,然后在 IE 6 和 7 下添加了一致样式的条件注释。接下来,令我惊讶的是,我发现 jQuery 在 IE 中的行为并不相同;所以我changed my Javascript to be portable on FF and IE使用条件语句和不太纯的 jQuery。
今天开始在Webkit和Google Chrome上测试,发现不仅FF和IE的样式不一致,而且Javascript根本不执行,可能是语法或解析错误。我期待一些 CSS 工作,但现在我有更多的 Javascript 调试要做!在这一点上,我想退后一步思考,然后再为所有情况编写成堆的特例。
我不是在寻找 Elixir ,只是在寻找最佳实践,以使事情尽可能易于理解和维护。我更喜欢这是否适用于没有服务器端智能的情况;但是,如果有优势,例如,检查用户代理,然后将不同的文件返回给不同的浏览器,那么如果 Web 应用程序的总体可理解性和可维护性较低,那也没关系。非常感谢大家!
最佳答案
我处于类似情况,正在开发一个面向 IT 专业人员的 Web 应用程序,并且需要支持同一套浏览器,但不包括 Opera。
到目前为止我学到的一些一般性的东西:
- 经常在尽可能多的目标浏览器中进行测试。确保您在开发计划中有时间这样做。
- 工具包可以让您部分获得跨浏览器支持,但最终会在某些浏览器上遗漏一些东西。计划一些时间来调试和研究针对特定浏览器的修复。
- 如果您需要工具包中没有的东西并且找不到免费的代码片段,请花一些时间编写实用函数来封装依赖于浏览器的行为。
- 了解已知的浏览器错误,以便围绕这些错误引导您的实现。
我学到的一些更具体的东西:
- 仅在万不得已时才使用基于用户代理的条件代码,因为不同代的“相同”浏览器可能具有不同的功能。相反,首先测试符合标准的行为——例如,
if(node.addEventListener)...
,然后是常见的非标准函数——例如,if(window.attachEvent)...
,然后,如果必须的话,查看用户代理以了解特定的浏览器类型和版本号。 - 几乎每个浏览器都知道 DOM 何时“准备好”以供脚本访问。一个好的工具包会为您抽象这一点。
- 几乎每个浏览器的事件处理程序都不同。一个好的工具包会为您抽象这一点。
- 创建 DOM 元素,尤其是表单控件或具有属性的元素,使用 document.createElement 和 element.setAttribute 可能会很棘手。虽然不是标准的(而且有点讨厌),但使用 node.innerHTML 和包含 HTML 位的字符串似乎在各种浏览器类型中更可靠。我还没有找到可以让您使用 element.setAttribute 将“名称”添加到 IE 中的表单元素的工具包。
- CSS 差异(和错误)与 JS 差异一样重要。
- “核心”Javascript 功能(字符串、日期、正则表达式、数组函数)似乎在浏览器中非常可靠和一致,尤其是与 DOM/CSS/Window 函数相关。事实上,每个平台上的语言并不完全不同,这有点令人高兴。 :-)
我还没有真正遇到任何特定于 Chrome 的 JS 错误,但它始终是我测试的首批浏览器之一。
HTH
关于css - 在所有网络浏览器(包括谷歌浏览器)之间保持形式和功能一致的最佳技术是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45239/