Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 跨浏览器兼容性问题_Javascript_Html_Browser - Fatal编程技术网

Javascript 跨浏览器兼容性问题

Javascript 跨浏览器兼容性问题,javascript,html,browser,Javascript,Html,Browser,我发现很多人都有跨浏览器兼容性问题 我的问题是为什么浏览器呈现html、css或js的方式不同 是因为DOM吗?盒子型号? 当有来自W3C等的标准时,为什么会出现跨浏览器兼容性问题 主要的互联网浏览器显示HTML内容的方式有什么不同吗?为什么Internet Explorer、Firefox(Mozilla)、Opera可能会以不同方式显示相同的内容? 在构建跨浏览器兼容的网站时,我应该记住什么?有很多原因或不兼容: 规范通常是针对特定供应商开发的适当功能而编写的 规范有时可能写得不好、模棱两

我发现很多人都有跨浏览器兼容性问题

我的问题是为什么浏览器呈现html、css或js的方式不同

是因为DOM吗?盒子型号?

当有来自W3C等的标准时,为什么会出现跨浏览器兼容性问题

主要的互联网浏览器显示HTML内容的方式有什么不同吗?为什么Internet Explorer、Firefox(Mozilla)、Opera可能会以不同方式显示相同的内容?


在构建跨浏览器兼容的网站时,我应该记住什么?

有很多原因或不兼容:

  • 规范通常是针对特定供应商开发的适当功能而编写的
  • 规范有时可能写得不好、模棱两可或没有在预期特定的最终用例时编写
  • 浏览器供应商出于自身原因偶尔会忽略该规范
其他因素:

  • 很多东西很难实施,更不用说正确实施了
  • 它还必须实现以处理格式不正确的HTML、向后兼容性等。浏览器供应商有时会牺牲“正确性”来实现“互操作性”
  • 历史、政治和人物

该标准规定了如何将HTML/CSS标记呈现为可视元素。它没有具体指定渲染的工作方式。许多不同的人和公司创建了不同的可视化显示标记的方法。由于HTML呈现是一项极其复杂的任务,当然它们并不是都收敛于完全相同的解决方案。所有渲染引擎的目标都是相同的,但通常规格不够明确,允许存在细微差异(无论是像素级),错误也是不可避免的

此外,在过去的日子里,浏览器供应商不太关心标准,而更关心快速获得市场份额,而且某些公司在接受标准方面进展缓慢(你知道自己是谁)

最后,相当复杂的规范和更复杂的浏览器是由许多不同的人编写的;你不能期望从这个过程中得到绝对的完美。完美也不是HTML的目标;它是一种简单的、独立于供应商和平台的标记语言,可以在各种设备上显示信息,这一点做得非常好。如果你需要像素级的完美效果,你需要一种能够提供这种效果的技术,比如AdobeFlash(它既不独立于平台,也不独立于供应商,也不简单)


试着从半满的角度来看待它:成千上万的不同的人编写了数百万行代码,在许多不同的平台上做着完全不同的事情,有着许多不同的目标和重点,但最终所有人都呈现出几乎相同的HTML标记,往往只有微小的、几乎不相关的差异。当然,每个引擎中都有弱点,如果你碰巧一次击中了所有弱点,你的网站将以不同的方式在每个浏览器中崩溃。但这是可以通过一点经验来避免的。

我相信有人会更好地回答这个问题,但这是一个开始:

是的,在CSS呈现方面应该遵守一些标准。问题是,一些浏览器编辑(咳嗽微软咳嗽)不认为优先执行正确的规范(甚至完全)。甚至,当布局引擎试图确保兼容性时,在混合各种CSS属性和单元时,要弄清楚如何正确地呈现内容可能会变得非常棘手(例如,请参见ACID测试)

要创建一个跨浏览器的网站,您基本上必须检查您的网站的所有页面在访问者使用的浏览器(或您支持的浏览器)中是否正确呈现。各种工具,如seleniumhq.org,可以帮助实现这一点

你基本上必须决定你要做什么

  • 为最低公分母而设计(如果是IE6,你就无能为力)
  • 使用验证CSS和使用黑客(例如clearfix)来纠正某些浏览器中的错误行为进行设计
  • 决定不支持某些浏览器(IE6是首选浏览器)
  • 嗅探浏览器并相应调整显示(不是首选方式)
关于操作DOM的差异,像jQuery这样的库帮助很大,因为它们对您隐藏了实现差异

作为参考,最好至少在以下方面测试您的网站:

  • 基于WebKit的浏览器(Chrome、Safari)
  • 基于Gecko的浏览器(Firefox)
  • 歌剧院

    • 哈米什所说的一切,以及他提到的另一个主要问题是浏览器如何处理错误的HTML。例如,在IE4/NS4的时代,元素是非常有问题的。如果您没有关闭标签,IE4将为您关闭它。Netscape 4会默默地完全忽略这个表


      这在今天仍然是正确的,一个浏览器将以不同的方式修复不正确的标记。是的,标记应该被更正,但是浏览器会尽力呈现一些东西。

      这是伟大的浏览器战争的后果。现在Netscape通信公司已是一片废墟,但竞争对手为了超越对方而制造的怪癖仍然存在于浏览器的代码库中,人们仍然在开发团队中。考虑看克劳福德,他给出了一些突出的主题。(您将希望保存文件,而不是流式传输)

      这并不能真正解释有关问题的任何内容。这可能只是一个问题的部分答案@user177883:Hamish刚刚给了你一个关于你所有问题的大部分原因的概述