跨浏览器脚本编码指南第1部分:浏览器和标准

不要使用浏览器检测-而是使用对象检测

浏览器检测是当您尝试检测浏览器时。 这是不可靠的并且有很多问题。 如果出现新的浏览器怎么办? 您真的可以期望检测到地球上的每个浏览器吗? 我什至看到了尝试检测浏览器版本的脚本。 想象一下当IE7出现时他们的烦恼和困扰(“在IE6中可以正常工作,但在IE7中无法工作”)。 那么解决方案是什么?

简便,改为使用对象检测。 在对象检测中,我们检查对象的存在。 如果存在,我们将对其进行编码。 如果没有,我们可以尝试其他方法,或者检查是否存在另一个对象。 这样,我们可以支持尽可能多的浏览器,而不必担心特定浏览器可能支持什么。 例如,在AJAX中,我们可以检查XMLHttpRequest对象是否存在:

if (window.XMLHttpRequest) { ...
在IE6中,本机不支持此功能,因此我们还有另一个代码块来检查对ActiveXObject的支持:
else if (window.ActiveXObject) {
希望这给您一个基本的想法。 首先使用标准方法。 标准方法通常可在几乎所有现代浏览器中使用。 使用标准

有标准是有原因的。 使用它们。 这将使您的代码在大多数浏览器中都能正常工作。 如果由于某种原因您正在以标准方式进行编码而代码无法正常工作,则该浏览器可能是Internet Explorer。

但是,由于它是最受欢迎的浏览器,因此您只能选择支持它。 好消息是,流行起来意味着错误/怪癖很可能会被记录在案(不在官方文档中,而是在Web上的某个地方)。

检查对象,方法等是否存在,并相应地进行编码。 如果仅是错误,请使用try..catch语句在错误的浏览器中捕获错误并使用修复/解决方案。 如果有不影响其他浏览器的解决方案,则可以改用该解决方案。

例如,以在选择对象的末尾附加一个选项为例。 标准方法使用两个参数-第二个参数为null,但在IE中不起作用,因此可以使用以下代码:

try {
  selObj.add(optObj, null);
} catch(e) { // for IE
   selObj.add(optObj);
  }
实际标准是什么? 对于文档对象模型(DOM),您可以看到W3C DOM 。 至于Javascript(或ECMAScript),请参见语言规范

如果您发现这些难以解读,

W3Schools HTML DOM参考指出了某些内容是否属于W3C标准。 Mozilla核心Javascript 1.5参考对于核心语言也很有用。 有两个以上的浏览器

“真的吗?!”,您可能会讽刺地问。 但是,从论坛中常见的问题来看,许多人似乎只担心Internet Explorer和Mozilla Firefox。 一些人来说,伤心地说,仍然认为这是足以只支持IE浏览器。

看看一个

浏览器列表中看到的不止两个。

任何类型的Web应用程序或网站都应尝试支持尽可能多的Web浏览器。 再次,如前所述,如果您遵循标准,此任务将变得更加容易。 您可能需要做的只是稍作调整,以允许出现一些错误或怪癖。

From: https://bytes.com/topic/javascript/insights/741436-guide-coding-cross-browser-scripts-part-1-browsers-standards

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值