几年前,我为我的一个 Firefox 插件编写了以下函数,它可以帮助我获取特定于平台的换行符:
GetNewLine: function()
{
var platform = navigator.platform.toLowerCase();
if(platform.indexOf('win') != -1) // Windows
return "\r\n";
else if(platform.indexOf('mac') != -1) // Mac
return "\r";
else // *nix
return "\n";
}
这似乎工作正常,但阅读后换行维基百科文章 http://en.wikipedia.org/wiki/Newline,我注意到最近的 Apple 操作系统(OS X 及更高版本)现在使用 UNIX 风格\n
行结束。因此,我的小函数可能会在这种情况下返回错误的结果(我没有可以测试它的 Mac 操作系统)。
有没有办法让 Firefox 告诉我平台特定的换行符是什么?也许某种内置实用函数?我在扩展程序写入的文本文件中使用这些换行符,并且我想使用特定于平台的换行符,以便文件在各种系统上看起来都合适。
更新(2013 年 2 月 13 日):所以运行后navigator.platform.toLowerCase()
Mac-mini (OS X) 上的函数调用,我得到输出值macintel
。这将导致我的函数返回\r
代替\n
正如它应该。
这是我最终使用的:
GetNewLine: function()
{
var OS = Components.classes["@mozilla.org/xre/app-info;1"].
getService(Components.interfaces.nsIXULRuntime).OS;
return /winnt|os2/i.test(OS) ? "\r\n" : /mac/i.test(OS) ? "\r" : "\n";
}
我很确定“mac”的情况永远不会发生,因为它没有被列为可能性操作系统目标 https://developer.mozilla.org/en-US/docs/OS_TARGET变量(我正在通过OS
财产在nsIXULRuntime
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)