【问题标题】:Do I still need to test rendering in both Chrome and Safari if they both use Webkit?如果 Chrome 和 Safari 都使用 Webkit,我还需要在它们中测试渲染吗?
【发布时间】:2011-05-10 01:07:50
【问题描述】:

是否有必要在 Chrome 和 Safari 中测试我的网站的渲染,尽管这两种浏览器都在下面实现了 Webkit 渲染引擎?

这是开发人员的逃避还是一个有效的假设?

我特意询问我的网站页面是否会在两种浏览器中呈现相同的效果,以及我的 Javascript 是否适用于两种浏览器。

【问题讨论】:

  • 好问题。如果相同的答案适用于 Windows/Mac/Linux 平台,我也很感兴趣。
  • 是的!,软件很复杂,浏览器中有很多部分,测试是唯一可以确定的方法。

标签: javascript google-chrome safari cross-browser webkit


【解决方案1】:

有一些细微的差异,所以我会在两者中进行测试。一些例子:

  • Safari 默认禁用 3rd-party cookie,但 Chrome 默认启用它们。
  • Safari 不会在 DOM 中存储 <noscript> 内容,Chrome 会
  • Chrome 将每个浏览器窗口都保存在其自己的操作系统进程中(多进程模型)。 Safari 将所有窗口保存在一个进程中。 [但请注意:即将推出的 WebKit2 将支持内置的多进程模型]。
  • Chrome 使用 V8 javascript 引擎,Safari 使用 Nitro。

我知道我遇到过其他一些不同之处,但我一时想不起来。如果我有任何情况,我会更新这篇文章。

【讨论】:

  • 在实践中,在开发过程中,我只会在虚拟机中在 Chrome、Firefox 和 IE 7(上帝帮助我)之间切换,确保一切正常——如果你有这些,问题在其他浏览器中很少见。我只会在部署到生产环境之前返回并检查其他浏览器(Safari、IE 6、IE 8,有时是移动设备)。但我检查。
  • 我认为他们可能在渲染/脚本引擎之外还有很多其他差​​异:除了你提到的“简单”策略/解析差异之外,Safari 是否使用相同的多进程模型?它们是否实现了所有相同的 JavaScript 可访问 API(工作者、数据库等)?
  • @SamB,关于 Chrome 的多进程模型的要点。我将其添加到答案中。关于 javascript,我认为您是正确的——我确信过去我在他们的 javaScript 引擎中遇到了一些重大差异,但老实说,我现在不记得这些差异是什么了。
  • Chrome 使用了一种 WebKit 形式,称为 Blink en.wikipedia.org/wiki/Blink_(web_engine)
【解决方案2】:

他们使用不同的 JavaScript 引擎,Chrome:V8, Safari:Nitro

【讨论】:

    【解决方案3】:

    每个浏览器可能会选择在其最终版本中包含不同的 webkit 功能,因此它们并不总是相同的。

    【讨论】:

    • 不仅如此,我相信 Chrome 的 webkit 经常有补丁(还没有)。谁知道他们的“端口”是否会显着改变渲染——除了任何本机 GUI 控件的明显情况,我的意思是:-)。
    【解决方案4】:

    即使是不同版本的 Chrome 也会有不同的表现,不同版本的 Safari 也是如此。所以我不会使用这个假设,并且会在两种浏览器中进行测试。

    【讨论】:

    • 祝你好运在许多版本的 chrome 中测试相同的东西,不过 ;-)
    • 哦,我注意到了一个例子:似乎 Chrome 在 iframe 播放列表中对 history.back() 的行为 rainwave.cc 上只有一个之前的位置 iframe 已经消失在浏览整个标签和至少浏览 iframe 之间来回切换。 (而且 rainwave.cc 上的代码应该至少在我看到这种情况发生的大部分时间里都被冻结了。)
    【解决方案5】:

    有趣的问题,我之前也在考虑这个问题。我会说是的,因为渲染引擎只是浏览器的一部分。您还必须考虑到每个浏览器的许多版本仍在使用中。

    在 ether 中测试页面不需要太长时间,比抱歉更安全。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 2019-07-28
      相关资源
      最近更新 更多