在JavaScript中确定OS换行符
我正在生成供用户下载的文件,并且我想为他们的平台插入正确的换行符( n
, r
或rn
)。
我知道以下解决方案,但没有一个完全解决我的问题:
navigator.platform
或navigator.appVersion
。 这些属性已被弃用,所以我不想依赖它们。 n
,而不管操作系统如何。) 经过一番调查,我找不到其他地方的链接的mdn文章,据说navigator.platform
已被弃用。
WHATWG规范和W3规范仍将其纳入其生活标准中,并且没有关于弃用的说明。
实际上,w3工作组在1月份要求Firefox团队删除navigator.oscpu
或将其作为navigator.platform
的别名,因为前者仅由该浏览器实现。
注意:mdn页面声明它自2014年9月2日起已被弃用,但我不确定是什么促成了此编辑。
无论如何,我认为你可以安全地使用这个navigator.platform
属性来确定用户在哪个操作系统上运行(记住这些信息可能被用户欺骗,但这是他们的问题不是吗?)
编辑
@Teoli在2014年进行了编辑:
题 :
为什么在https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID/platform ...上将navigator.platform标记为已弃用?
答:
因为该规范要求浏览器供应商提供尽可能少的信息以避免指纹识别。 把''将是规格。 不要依赖它。
链接到提到的规格请求。
解析navigator.userAgent
可能是检测OS的合理可靠方法,因此可能使用哪种换行符。
有些东西可能会诀窍 - 可能需要针对单个平台测试的UA字符串进行一些调整。
如果UA被欺骗,它也不起作用。
function getLinebreak (){
var linebreaks = {
Windows: "rn",
Mac: "n",
Linux: "n"
}
for(key in linebreaks){
if(navigator.userAgent.indexOf(key) != -1){
return linebreaks[key];
}
}
return "n";
}
注意:大多数情况下,您可能只能安全地检查它是否是Windows,否则返回 n
像这样的东西在大多数情况下也可能工作:
function getLinebreak(){
if(navigator.userAgent.indexOf("Windows") != -1){
return "rn";
}
return "n";
}
链接地址: http://www.djcxy.com/p/87859.html