在JavaScript中获取特定于平台的换行符?

Jon*_*hop 6 javascript firefox newline firefox-addon

几年前,我为我的一个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";
}
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,但在阅读换行维基百科的文章后,我注意到最近的Apple操作系统(OS X及更高版本)现在使用UNIX样式\n行结尾.因此,我的小功能可能会为这种情况返回错误的东西(我没有Mac OS可以测试它).

有没有办法让Firefox告诉我特定于平台的换行符是什么?也许是某种内置的实用功能?我在我的扩展程序写入的文本文件中使用这些换行符,并且我想使用特定于平台的文件,以便文件在各种系统中看起来合适.

更新(2-13-2013):因此,navigator.platform.toLowerCase()在Mac-mini(OS X)上运行函数调用时,我得到输出值macintel.这将导致我的函数返回\r而不是\n应该返回.

Jon*_*hop 2

这是我最终使用的:

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";
}
Run Code Online (Sandbox Code Playgroud)

我非常确定“mac”情况永远不会发生,因为它没有在OS TARGET变量中列为可能性(我正在通过OS中的属性进行测试nsIXULRuntime)。