使用 Javascript 检测 CSS 功能

发布于 2024-11-30 01:21:58 字数 118 浏览 0 评论 0原文

是否可以使用 Javascript 检测 CSS 支持?

例如,是否可以检测浏览器是否支持这样的属性选择器?

input[type='text'] { }

Is it possible to detect CSS support by using Javascript?

For example, is it possible to detect if the browser supports attribute selectors like this?

input[type='text'] { }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

晚雾 2024-12-07 01:21:58

Modernizr 旨在检测浏览器功能,并且很可能能够在这种情况下提供帮助。
http://www.modernizr.com/

Modernizr is designed to detect browser features and may well be able to help in this instance.
http://www.modernizr.com/

弥繁 2024-12-07 01:21:58

这有点推测性,因为我还没有测试过它,但我相信可以通过 JS 添加一个 style 元素,后跟一个它有影响的元素,然后测试值:

未经测试的推测代码,可能有效也可能无效(为简洁起见,使用 jQuery):

$('<style type="text/css" id="foo">input[type="text"]{ width: 10px; }</style>').appendTo('head');
$('<input type="text" id="bar">').appendTo('body');
if ($('#bar').width() == 10)
{
  //attr selector supported
}
$('#foo, #bar').remove();

This is a bit speculative as I haven't tested it out, but I believe it would be possible via JS to add a style element followed by an element that it has an effect on, and then test the values:

Speculative untested code, may or may not work (jQuery used for brevity):

$('<style type="text/css" id="foo">input[type="text"]{ width: 10px; }</style>').appendTo('head');
$('<input type="text" id="bar">').appendTo('body');
if ($('#bar').width() == 10)
{
  //attr selector supported
}
$('#foo, #bar').remove();
骑趴 2024-12-07 01:21:58
document.querySelectorAll("input[type='text']")

但对于旧版浏览器来说,这自然是失败的。

除此之外,您可以使用 style 属性来检查某个 CSS 属性是否已应用。

input[type='text'] {
  background-repeat: no-repeat; /* or any other irrelevant, non-default value */
}

if (myInputElem.style.backgroundRepeat == "no-repeat") {
  // selector is supported
}
document.querySelectorAll("input[type='text']")

But that fails for older browsers, naturally.

Other than that, you could just use the style property to check if a certain CSS property has been applied or not.

input[type='text'] {
  background-repeat: no-repeat; /* or any other irrelevant, non-default value */
}

and

if (myInputElem.style.backgroundRepeat == "no-repeat") {
  // selector is supported
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文