gpt4 book ai didi

jquery - 检测jQuery不支持的浏览器(二)

转载 作者:行者123 更新时间:2023-12-03 21:58:28 25 4
gpt4 key购买 nike

如果这个问题有明显的答案,请原谅我,但我一直找不到。我正在考虑切换到 jQuery 2,尽管我不担心支持旧版浏览器,但我希望能够告诉使用不受支持的浏览器的用户他们无法使用该网站。

我在这里看到( http://blog.jquery.com/2013/03/01/jquery-2-0-beta-2-released/ ),您可以使用条件注释在不同版本的 IE 上分支 .js 文件,但我相信 jQuery 2.0 也放弃了对许多其他浏览器的支持,而不仅仅是 IE,所以我不知道认为这不会单独完成[编辑:这是错误的,请参阅下面的较大编辑]。

在理想的情况下,我会切换到 jQuery 2,然后当 jQuery 告诉我它不支持浏览器时调用一个 javascript 函数。我缺少一种简单的方法吗?

谢谢。

编辑:

我发现了这篇文章(http://bugs.jquery.com/ticket/13404),它引导我来到这里:http://jquery.com/browser-support/ 。事实证明,在支持方面,jQuery 2 仅与 IE 浏览器上的 jQuery 1.9 有所不同。因此,也许更好的问题是如何检测 jQuery 不支持的浏览器(一般来说,不仅仅是版本 2) - 我已经更新了问题标题。

编辑2:

由于功能检测是解决此问题的最推荐方法,因此 jQuery 支持方法在此处看起来很相关 ( http://api.jquery.com/jQuery.support/ )。然而,它似乎也很难依赖(因为它可能会在没有通知的情况下发生变化)。

我认为这提出了关键问题。 我怎么知道哪些 jQuery 功能可能不受旧浏览器的不支持? 例如,如果有人带着 4 版本旧的副本访问该网站Firefox,我不知道我需要测试哪些功能。如果 jQuery 能够提供某种完全支持的功能测试,就像 HTML5 那样: http://html5test.com/

编辑3:

好的,使用条件包含语句(在下面的答案中以及 jQuery 网站上突出显示),您可以处理旧版本的 IE。然而,对于其他浏览器来说,这有点棘手。由于您不能依赖 jQuery 来告诉您有关浏览器对函数 x、y 或 z 的支持的任何信息,因此我的方法只是查询底层 javascript。如果你想查询基于CSS的支持,可以使用modernizr。对于基于 javascript 的支持,这是我用来检测其他浏览器的 super 旧版本的方法:

function browser_ok() {

if (
( !Array.prototype.indexOf ) ||
( !Array.prototype.forEach ) ||
( !String.prototype.indexOf ) ||
( !String.prototype.trim ) ||
( !Function.prototype.bind ) ||
( !Object.keys ) ||
( !Object.create ) ||
( !JSON ) ||
( !JSON.stringify ) ||
( !JSON.stringify.length ) ||
( JSON.stringify.length < 3 )
)
{
return false;
}

// # local storage support
// source: http://diveintohtml5.info/storage.html

try {
var local_storage_support = ( 'localStorage' in window && window['localStorage'] !== null );
if ( !local_storage_support ) {
throw new Error("local_storage_support: failed");
}
}
catch ( e ) {
return false;
}

// # AJAX uploads

if ( !window.FormData || !window.FileReader ) {
return false;
}

// # HTML data elements

var body = $("body");
body.data("browser_support_test",42);
if ( body.data("browser_support_test") !== 42 ) {
return false;
}
else {
body.removeData("browser_support_test");
}

return true;
}

AFAICT,这个功能应该消除所有可能给 jQuery 的基本功能带来麻烦的浏览器。如果您想做一些奇特的事情,那么您可能知道需要某个特定的功能,因此您可以专门检查它。

最佳答案

在支持 IE 6、7 和 8 的同时获得 jQuery 2.0 的好处的一种方法是使用条件注释:

<!--[if lt IE 9]><script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script><![endif]-->
<!--[if IE 9]><!--><script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script><!--<![endif]-->
<script>window.jQuery||document.write('<script src="jquery.js"><\/script>');</script>
  • 第一个条件注释确保为 IE < 9 加载 jQuery 1.x。
  • 最新版本的 jQuery (2.0.3) 用于 IE 9 和无法识别条件注释的浏览器(IE 10 放弃了对条件注释的支持)。
  • 当 jQuery 无法从 CDN 加载时,会加载后备(jquery.js,托管在您的服务器上)。

关于jquery - 检测jQuery不支持的浏览器(二),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18087207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com