【问题标题】:jQuery and Browser CompatibilityjQuery 和浏览器的兼容性
【发布时间】:2022-04-12 06:29:17
【问题描述】:

哎呀!我从事开发工作多年,一直试图强调与尽可能多的系统兼容的代码。

最近,我购买了jQuery in Action 一书并开始阅读。我对包含的源代码似乎无法在我当前计算机上的任何一个浏览器上正常工作这一事实感到非常不安。

具体来说,我下载了book's source code并为第2章选择了“jQuery Selectors Lab”。但它看起来不像书中的那样。

在 Google Chrome 上,DOM 示例和 DOM 示例代码窗格都是空的。在 IE7 上,事情看起来更接近书中的样子。但是 DOM 示例代码窗格中的源代码都在一行上(延伸到右侧,离开页面)。请注意,书中的屏幕截图是在 Mac 上运行的浏览器。

我很好奇 jQuery 经验丰富的用户正在寻找什么样的跨浏览器兼容性,以及这一发现对于希望尽可能兼容并计划使用 jQuery 的开发人员意味着什么。

【问题讨论】:

  • for 使用 jQuery 的主要原因之一是它为您处理了许多跨浏览器兼容性问题。在某些浏览器中失败的特定代码与该特定代码有关,而不是与 jQuery 框架有关。
  • @DA:是的,这就是我对 jQuery 感兴趣的原因。然而,作者非常有资格。如果他们不能用 jQuery 编写兼容的代码,我还有什么机会?
  • jQuery 处理(大部分)浏览器问题。因此,您拥有的代码没有运行的事实与 jQuery 库本身无关。即使是 MS 现在在 asp.net 中也使用 jQuery,所以我不会担心。

标签: javascript jquery cross-browser


【解决方案1】:

所有这些浏览器都积极支持jQuery:

  • 火狐2.0+
  • Internet Explorer 6+
  • Safari 3+
  • Opera 10.6+
  • Chrome 8+

过时的浏览器存在已知问题,如下表所示:

  • Mozilla Firefox 1.0.x
  • Internet Explorer 1.0-5.x
  • Safari 1.0-2.0.1
  • Opera 1.0-9.x
  • 征服者

jQuery 通常适用于 Konqueror 和 Firefox 1.0.x,但由于我们没有定期测试它们,因此可能会出现一些意想不到的错误。

如果您使用的是任何过时的浏览器,那么这可能是您的问题,否则,您应该在 * 上发布您的代码以获得帮助。可能不是浏览器导致问题,但可能是代码的编写或执行方式。

【讨论】:

  • 被支持(甚至是积极的)与产生一致的结果不同。高度兼容对我来说很重要的原因是因为我无法决定我的用户将使用哪些浏览器。请注意,对于 Chrome(问题最多的一个),我运行的是最新版本。
  • 如果不发布示例,很难判断您遇到了什么问题。
  • 我不确定您的想法。我发布了我正在查看的代码的链接。
  • 我下载了 zip 文件并查看了您提到的示例。代码使用get()。如果您使用的是 Chrome,那么这与指向本地文件的权限问题有关。在*上已经讨论过很多次了。您可以通过将文件上传到实时生产服务器来解决此问题,或者尝试在 Firefox 上运行它。查看以下链接,了解如何在从 localhost 工作时解决 chrome 的权限问题。 robspangler.com/blog/jquery-load-doesnt-work-in-chrome
【解决方案2】:

我认为您的部分问题是您正在从文件系统访问某些内容,该文件系统旨在从 Web 服务器加载。例如,我在 Chome 的第 2 章示例中看到了这个错误:

XMLHttpRequest cannot load file://...chapter2/dom.sample.html.
Origin null is not allowed by Access-Control-Allow-Origin.

Chrome 中的其他东西似乎表现得相当不错。

我通常以 IE[789]、Chrome、Firefox、Safari 和 Opera 为目标,我还没有看到很多特定于 jQuery 或 jQuery-UI 的浏览器问题。问题主要是 CSS 问题和某些 JavaScript 问题(两者都在 IE 中)不是 jQuery 问题。

【讨论】:

  • 嗯,这不是 my 的例子。不幸的是,我对此知之甚少,无法理解为什么您发布的错误特定于本地加载的网站。
  • Jonathan...您是从本地 Web 服务器还是从本地文件系统加载页面?那里有很大的不同。
  • @DA:我很确定他是从本地 FS 加载它们,因此 AJAX 无法在 Chrome 中运行,而且他看到的结果通常很混乱。
  • @DA:是的,我在本地加载它们。
  • 本地...什么?文件系统还是服务器?如果您只是从文件系统加载它们,那么如上所述,这可能是问题所在。
【解决方案3】:

为以下桌面浏览器维护 jQuery 版本 3:

  • Chrome:(当前 - 1)和当前
  • 边缘:(当前 - 1)和当前
  • Firefox:(当前 - 1)和当前
  • Internet Explorer: 9+
  • Safari:(当前 - 1)和当前
  • 歌剧: 当前

它还为以下移动浏览器维护:

  • Android 4.0+ 上的股票浏览器
  • iOS 7+ 上的 Safari

来源:https://jquery.com/browser-support/

【讨论】:

    【解决方案4】:

    我不会过分担心 jQuery 的跨浏览器兼容性,就像我会担心本书中的代码质量一样。我没有亲自看过这本书,所以我无法做出个人判断;然而,我是目前拥有大约 15,000 名用户的 Web 应用程序的首席开发人员,我们已经自信地使用 jQuery 几年了,没有任何问题。我们必须支持使用市场上所有主要浏览器的多个平台上的客户。当 jQuery 代码编写正确并针对所有环境进行测试时,无论您使用什么浏览器,它都绝对可以正常工作。

    【讨论】:

    • 嗯,我猜这很令人鼓舞。然而,这本书的作者似乎很合格。其中一位直接参与了jQuery及相关插件的开发。前言是 jQuery 的创建者 John Resig 撰写的一篇热情洋溢的评论。如果他们不能把它做对,jQuery 新手怎么办?
    【解决方案5】:

    代码示例似乎使用过时的 jQuery v1.4。下载最新版本并查看known issues 了解有关跨浏览器兼容性的更多详细信息。

    【讨论】:

      【解决方案6】:

      我不知道为什么,但是如果我将整个示例目录复制到 tomcat/webapps,它就可以正常工作。但是如果我直接从浏览器打开页面(lab.selectors.html),它不会显示 dom 示例部分。 Firefox 控制台的错误信息是这样的:

      [16:56:36.335] 文档元素@file:///C:/JavaScript/jqia2/chapter2/dom.sample.html:2 之后的垃圾

      【讨论】:

        最近更新 更多