我正在开发一个需要在客户端和服务器端工作的JS应用程序(在浏览器和Node.js中的Javascript中),我希望能够重用代码的各个部分.用于双方.
我发现这window是一个只能在浏览器和global节点上访问的变量,所以我可以检测代码在哪个环境中执行(假设没有脚本声明window变量)
他们是两个问题.
我应该如何检测代码在哪个浏览器中运行.例如,这段代码是否正常.(此代码是内联的,意味着它被一些全局代码包围,可以在两种环境中重用)
if window?
totalPath= "../examples/#{path}"
else
totalPath= "../../examples/#{path}"
Run Code Online (Sandbox Code Playgroud)如何在两种环境中使用全局变量?现在,我正在做以下事情,但这确实感觉不对.
if window?
window.DocUtils = {}
window.docX = []
window.docXData= []
else
global.DocUtils= {}
global.docX = []
global.docXData = []
Run Code Online (Sandbox Code Playgroud)我需要将IE和FF浏览器与其他浏览器分开
这是一个伪代码:
If (CurrentBrowser == IE(6+) or FF(2+) )
{
...
}
else
{
...
}
Run Code Online (Sandbox Code Playgroud)
在protected void Page_Load()事件中(这样认为)
if ((Request.Browser.Type == "IE") || (Request.Browser.Type == "FF"))
{
WebMsgBox.Show("1111");
}
Run Code Online (Sandbox Code Playgroud)
没有效果: - /什么是IE和FF类型?
为了检测IE,大多数Javascript库都做了各种各样的技巧.
YAHOO.env.ua = function()(文件yahoo.js)中的用户代理进行正则表达式在阅读了这个答案之后,我想到了这是真的,为了在Javascript中简单地检测IE,我们可以简单地添加到我们的页面:
<!--[if IE]><script type="text/javascript">window['isIE'] = true;</script><![endif]-->
<script type="text/javascript" src="all-your-other-scripts-here.js"></script>
Run Code Online (Sandbox Code Playgroud)
现在,window.isIE为我们所有的Javascript代码设置变量,只需执行以下操作:
if(window.isIE)
...
Run Code Online (Sandbox Code Playgroud)
除了这可能导致痛苦,因为它必须在所有页面中添加之外,是否存在我可能不知道的任何问题/考虑因素?
仅供参考:我知道最好使用对象检测而不是浏览器检测,但有些情况下您仍然需要使用浏览器检测.
javascript internet-explorer browser-detection conditional-comments
我需要检测浏览器是IE还是Edge with Angular(TypeScript).可能吗?如果是这样,怎么样?
通常当我浏览互联网时,我发现人们通常使用CSS黑客来使他们的网站在所有浏览器中看起来都一样.就个人而言,我发现找到所有这些黑客并测试它们是非常耗时的; 您所做的每项更改都必须在4个以上的浏览器中进行测试,以确保它不会破坏其他任何内容.
大约一年前,我浏览了互联网上其他主要网站正在使用的内容(雅虎,谷歌,BBC等),并发现其中大多数都在进行某种形式的浏览器检测(JS,HTML if语句,基于服务器).我也开始这样做了.在我最近工作的几乎所有网站上,我使用jQuery,所以我使用内置的浏览器检测.
您使用或不使用其中任何一种是否有原因?
任何人对如何使用jquery.support测试IE6(而不是IE7)的特定内容有任何想法?
我的问题是IE6支持:仅为锚元素悬停psuedo-class,而IE7确实支持所有元素(如FF,Chrome等).所以我想做一些特殊的事情,以防浏览器不支持:悬停所有元素...因此我需要一种方法来测试这个功能.(不想使用jQuery.browser).有任何想法吗?
我知道你应该尽可能地进行功能检测,但是如果浏览器是Microsoft Edge浏览器,你可以在Javascript中检测到吗?
我维护一个旧产品,我想显示一个警告,可以打破一些功能,而无需花费大量时间来修复旧代码.
试图用PHP检测用户的浏览器,$ _SERVER ['HTTP_USER_AGENT']是一种可靠的方法吗?我应该选择get_browser函数吗?您找到哪一个会带来更精确的结果?
如果这种方法是实用的,那么建议使用它来输出相关的CSS链接,例如:
if(stripos($_SERVER['HTTP_USER_AGENT'],"mozilla")!==false)
echo '<link type="text/css" href="mozilla.css" />';
Run Code Online (Sandbox Code Playgroud)
我注意到了这个问题,但我想澄清这是否适合面向CSS的检测.
更新:
真的很可疑:我试过echo $_SERVER['HTTP_USER_AGENT'];IE 7,这就是输出:
Mozilla/4.0(兼容; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
Safari也给了"mozilla"一些奇怪的东西.是什么赋予了?
从1.4开始,似乎jQuery.browser能够很容易地识别webkit.但是如何使用它来区分Chrome和Safari(反之亦然)?
javascript ×4
jquery ×3
angular ×1
asp.net ×1
c# ×1
coffeescript ×1
css ×1
css-hack ×1
node.js ×1
php ×1
safari ×1
typescript ×1
webkit ×1