Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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_Css_Browser Detection - Fatal编程技术网

Javascript 浏览器检测,做什么和不做什么。这样行吗?

Javascript 浏览器检测,做什么和不做什么。这样行吗?,javascript,css,browser-detection,Javascript,Css,Browser Detection,因此,我理解浏览器检测(即navigator.userAgent)不应用于决定使用哪个对象方法/属性;然而,我想根据浏览器设置一些简单的CSS和JavaScript。然而,这还不足以证明一个全新的样式表是正确的。所以,如果我使用浏览器检测来决定将什么CSS应用于元素,可以吗 编辑 好吧,让我们具体点。我说的是按钮内的文本阴影按钮内的文本并非在所有浏览器中都垂直居中,因此我根据浏览器的不同使用JS对其进行了调整。当然,浏览器检测将是选择CSS样式的一种很好的方法。基于您的问题。当然,浏览器检测将是

因此,我理解浏览器检测(即navigator.userAgent)不应用于决定使用哪个对象方法/属性;然而,我想根据浏览器设置一些简单的CSS和JavaScript。然而,这还不足以证明一个全新的样式表是正确的。所以,如果我使用浏览器检测来决定将什么CSS应用于元素,可以吗

编辑


好吧,让我们具体点。我说的是按钮内的文本阴影按钮内的文本并非在所有浏览器中都垂直居中,因此我根据浏览器的不同使用JS对其进行了调整。

当然,浏览器检测将是选择CSS样式的一种很好的方法。基于您的问题。

当然,浏览器检测将是选择CSS样式的好方法。根据您的问题。

通常,您希望更改浏览器CSS的原因是针对IE。为此,您应该使用IE的支持,仅针对IE包含样式表或内联样式。例如:

<link rel="stylesheet" type="text/css" href="common.css" />
<!--[if lte IE 6]>
  <link rel="stylesheet" type="text/css" href="ie6.css" />
<![endif]-->

只有IE6和更早的版本才会包含第二个样式表,您可以在其中覆盖较早的样式或修复问题。不需要JavaScript。

通常,您希望更改浏览器CSS的原因是针对IE。为此,您应该使用IE的支持,仅针对IE包含样式表或内联样式。例如:

<link rel="stylesheet" type="text/css" href="common.css" />
<!--[if lte IE 6]>
  <link rel="stylesheet" type="text/css" href="ie6.css" />
<![endif]-->

只有IE6和更早的版本才会包含第二个样式表,您可以在其中覆盖较早的样式或修复问题。不需要JavaScript。

您似乎想要一个IE CSS解决方案,而不必指定一个完整的新样式表。您可以使用条件注释,例如针对IE6:

<!--[if lt IE 7]><body class="browser-ie6"><![endif]-->
<!--[if gte IE 7]><!--><body class="browser-ok"><!--<![endif]-->
在主样式表中

几乎没有一个很好的理由去看navigator.userAgent,它很麻烦,甚至按照浏览器嗅探标准也不可靠

预计到达时间:

我在按钮中添加了一个文本阴影

你不需要浏览器嗅探。只需包括规则。如果成功了,成功了,如果失败了,你什么都没有失去

如果要为不支持备份样式的浏览器提供备份样式,可以使用其他规则:

button { text-shadow: 2px 2px 2px white; }
body.support-noshadow button { background: white; }
使用一些JS来检测案例:

if (!('textShadow' in document.body.style))
    document.body.className+= ' support-noshadow';

您似乎想要一个IE CSS解决方案,而不必指定一个完整的新样式表。您可以使用条件注释,例如针对IE6:

<!--[if lt IE 7]><body class="browser-ie6"><![endif]-->
<!--[if gte IE 7]><!--><body class="browser-ok"><!--<![endif]-->
在主样式表中

几乎没有一个很好的理由去看navigator.userAgent,它很麻烦,甚至按照浏览器嗅探标准也不可靠

预计到达时间:

我在按钮中添加了一个文本阴影

你不需要浏览器嗅探。只需包括规则。如果成功了,成功了,如果失败了,你什么都没有失去

如果要为不支持备份样式的浏览器提供备份样式,可以使用其他规则:

button { text-shadow: 2px 2px 2px white; }
body.support-noshadow button { background: white; }
使用一些JS来检测案例:

if (!('textShadow' in document.body.style))
    document.body.className+= ' support-noshadow';

按照您对问题的措辞,答案是肯定的,使用浏览器检测根据浏览器使用JavaScript设置简单CSS。但是,我认为这不是你真正想要问的

更渐进的方法是使用特征检测,而不是浏览器检测,即浏览器是否支持x如果它这样做了,那么就这样做,否则就做别的事情

然而,有时这并不总是那么容易做到,因为编写允许测试功能的代码可能不是那么简单。我想说,在这些情况下,实用的方法可能是尽可能具体地进行浏览器检测,以期在将来有已知/可靠的方法来测试某个功能时进行功能检测


如果您可以通过编辑您的问题来提供更多详细信息,我们可能会进一步提供帮助。

根据您对问题的措辞,答案是肯定的,请使用浏览器检测来根据浏览器使用JavaScript设置简单CSS。但是,我认为这不是你真正想要问的

更渐进的方法是使用特征检测,而不是浏览器检测,即浏览器是否支持x如果它这样做了,那么就这样做,否则就做别的事情

然而,有时这并不总是那么容易做到,因为编写允许测试功能的代码可能不是那么简单。我想说,在这些情况下,实用的方法可能是尽可能具体地进行浏览器检测,以期在将来有已知/可靠的方法来测试某个功能时进行功能检测


如果您可以通过编辑您的问题提供更多详细信息,我们可能会进一步提供帮助。

应该做的和不应该做的都很好。。。另一方面,浏览器检测似乎已被“对象检测”所取代:

SitePoint对使用浏览器嗅探的看法: Stackoverflow自己的调查:
做什么和不做什么都很好。。。另一方面,浏览器检测似乎已被“对象检测”所取代:

SitePoint采用浏览器sn 如果: Stackoverflow自己的调查:
如果您希望检测浏览器版本或供应商,以便避免使用该浏览器不支持的CSS或其他功能,最好测试该功能是否存在,而不是测试浏览器版本

如果要检测浏览器版本或供应商,以便避免使用CSS或该浏览器不支持的其他功能,最好测试该功能是否存在,而不是测试浏览器版本

您可能希望查看或至少查看其文本阴影测试。它是一个JavaScript库,可以为您执行此功能检测,让您根据结果以CSS和JS为目标

您可能希望查看或至少查看其文本阴影测试。它是一个JavaScript库,可以为您执行此功能检测,让您根据结果以CSS和JS为目标

文本阴影的解决方案非常简单,因为它是标准的。将自己设置为测试DIV并检查样式是否未定义:

if(div.style.textShadow !== undefined){ return true; }else{ return false; }
注意,您不需要,也不应该设置样式。IE将像设置任何其他对象属性一样反推样式。以上代码将在IE中未定义,所有其他代码将。。。嗯,除了未定义的东西

与其他CSS3样式相比,它变得更加复杂,因为您需要考虑所有浏览器前缀:

if(
    div.style.MozBoxShadow !== undefined ||
    div.style.WebkitBoxShadow !== undefined ||
    div.style.OBoxShadow !== undefined ||
    div.style.KhtmlBoxShadow !== undefined ||
    div.style.msBoxShadow !== undefined ||
    div.style.boxShadow !== undefined // don't forget this one!
){return true}

文本阴影的解决方案非常简单,因为它是标准的。将自己设置为测试DIV并检查样式是否未定义:

if(div.style.textShadow !== undefined){ return true; }else{ return false; }
注意,您不需要,也不应该设置样式。IE将像设置任何其他对象属性一样反推样式。以上代码将在IE中未定义,所有其他代码将。。。嗯,除了未定义的东西

与其他CSS3样式相比,它变得更加复杂,因为您需要考虑所有浏览器前缀:

if(
    div.style.MozBoxShadow !== undefined ||
    div.style.WebkitBoxShadow !== undefined ||
    div.style.OBoxShadow !== undefined ||
    div.style.KhtmlBoxShadow !== undefined ||
    div.style.msBoxShadow !== undefined ||
    div.style.boxShadow !== undefined // don't forget this one!
){return true}


澄清您为什么要这样做,因为更好的解决方案可能会解决您的根本问题。这取决于您正在设置的浏览器和CSS属性(例如,我正在设置元素的填充),但在每个不同的浏览器上,如果我将其设置为相同,则看起来会有所不同。所以我必须在每个浏览器上进行不同的设置。@JCOC-Hm,这听起来像一个按钮元素。它是什么元素?还有,我们谈论的是什么浏览器。具体点。我说的是and:IE 7+、Chrome、Firefox和Opera。阐明为什么要这样做,因为更好的解决方案可能会解决您的根本问题。取决于您正在设置的浏览器和CSS属性,例如,我正在设置元素的填充,但是,在每个不同的浏览器上,如果我将其设置为相同的,则看起来会有所不同。所以我必须在每个浏览器上进行不同的设置。@JCOC-Hm,这听起来像一个按钮元素。它是什么元素?还有,我们谈论的是什么浏览器。具体点。我说的是和:IE 7+、Chrome、Firefox和Opera。我知道这一点,但我认为我无法测试:如果一些css会对网页产生一定的影响,你到底想测试什么?可能有一种已知的功能检测方法。我知道网页在每个浏览器上是如何呈现的,所以我调整了CSS,使其在所有浏览器上看起来都一样,或者至少它在所有浏览器上都能工作,即…@JCOC611-你知道网页是如何呈现的,但是,可能有一种已知的方法可以检测导致页面以特定方式呈现的底层特性。你能在你的问题中添加更多具体的细节吗?你到底想通过浏览器检测实现什么?我知道这一点,但我不认为我可以测试:如果一些css会对网页产生一定的影响,你到底想测试什么?可能有一种已知的功能检测方法。我知道网页在每个浏览器上是如何呈现的,所以我调整了CSS,使其在所有浏览器上看起来都一样,或者至少它在所有浏览器上都能工作,即…@JCOC611-你知道网页是如何呈现的,但是,可能有一种已知的方法可以检测导致页面以特定方式呈现的底层特性。你能为你的问题添加更多的细节吗?你到底想通过浏览器检测实现什么?我知道IE通常是唯一一个有..呃..问题..lol的浏览器,但这次我为Firefox、IE和Opera设置了不同的CSS。真的吗?为了什么?重要的、不可避免的Firefox/Opera CSS错误非常罕见。如果您正在做一些不同的事情来说明新CSS3特性的存在,那么您应该在样式对象中是否存在styleName属性上输入,而不是在糟糕的navigator.userAgent上输入。我想这就是CSS3。我在一个按钮中添加了一个文本阴影。我知道IE通常是唯一一个有..ermm..问题..lol的浏览器,但这次我为Firefox、IE和Opera设置了不同的CSS。真的吗?为了什么?重要的、不可避免的Firefox/Opera CSS错误非常罕见。如果你愿意的话
为了说明新CSS3特性的存在,您应该在style对象中是否存在styleName属性上输入不同的内容,而不是在糟糕的navigator.userAgent上输入。我想这就是CSS3。我在一个按钮中添加了一个文本阴影。我的问题与bobince的回答相同。@JCOC611这是因为我们都在猜测你的意图,因为你问了一个非常广泛的问题,但没有足够的信息来真正帮助你。我理解,但我只是问你是否有理由不使用浏览器检测,我并没有问我如何在不使用浏览器的情况下做到这一点detection@JCOC但这取决于特定的浏览器和特定的属性。这个问题没有一般性的答案。@JCOC611答案是,是的,如果有更好的方法来完成同样的事情,就有理由不去做。所以你的答案取决于你真正想做什么。也许浏览器检测和JavaScript的使用是不可避免的;然而,在不知道您具体需要做什么的情况下,我们无法帮助您回答这个问题。我的问题与bobince的回答相同。@JCOC611这是因为我们都在试图猜测您的意图,因为您提出了一个非常广泛的问题,但没有足够的信息来真正帮助您。我理解,但我只是问是否有理由不使用浏览器检测,我没有问我如何在不使用浏览器的情况下做到这一点detection@JCOC但这取决于特定的浏览器和特定的属性。这个问题没有一般性的答案。@JCOC611答案是,是的,如果有更好的方法来完成同样的事情,就有理由不去做。所以你的答案取决于你真正想做什么。也许浏览器检测和JavaScript的使用是不可避免的;然而,在不知道您具体需要做什么的情况下,我们无法帮助您回答这个问题。