Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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_Dom_Cross Browser - Fatal编程技术网

Javascript 在浏览器中,如何确定哪种换行符适合操作系统?

Javascript 在浏览器中,如何确定哪种换行符适合操作系统?,javascript,dom,cross-browser,Javascript,Dom,Cross Browser,换句话说,\n或\r\n(甚至\r)。我希望避免嗅探用户代理字符串 第一次尝试: var osLineBreak = (function () { var p = document.createElement('p'); p.innerHTML = '<br>'; return p.innerText; }()); 是否有一种我忽略的不那么复杂的技术?在网页上,linebreak的味道在操作系统中并不重要。在网页上显示时不考虑换行符。您需要一个BR元素或block元素来

换句话说,
\n
\r\n
(甚至
\r
)。我希望避免嗅探用户代理字符串

第一次尝试:

var osLineBreak = (function () {
  var p = document.createElement('p');
  p.innerHTML = '<br>';
  return p.innerText;
}());

是否有一种我忽略的不那么复杂的技术?

在网页上,linebreak的味道在操作系统中并不重要。在网页上显示时不考虑换行符。您需要一个BR元素或block元素来实现这一点,而这些元素是跨平台的,在所有浏览器上都受支持

请参阅以获取过于简单的解释

更新:

因此,是否需要格式化文本框,以及是否有换行符是很重要的。对不起,我的英语有点蹩脚

从检测用户的操作系统开始,类似于以下内容:

 var OSName="Unknown OS";

 if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
 if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
 if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
 if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";

document.write('Your OS: '+OSName);
这方面有很多,但我让它更加简单,它仍然可以像150行版本一样工作

接下来,根据返回的操作系统,在变量中设置行尾,并从中构建字符串。即:

if (navigator.appVersion.indexOf("Win")!=-1){
    OSName="Windows";
    linebreak = "\r\n";
} // etc ...

在网页上,linebreak的风格在操作系统中并不重要。在网页上显示时不考虑换行符。您需要一个BR元素或block元素来实现这一点,而这些元素是跨平台的,在所有浏览器上都受支持

请参阅以获取过于简单的解释

更新:

因此,是否需要格式化文本框,以及是否有换行符是很重要的。对不起,我的英语有点蹩脚

从检测用户的操作系统开始,类似于以下内容:

 var OSName="Unknown OS";

 if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
 if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
 if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
 if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";

document.write('Your OS: '+OSName);
这方面有很多,但我让它更加简单,它仍然可以像150行版本一样工作

接下来,根据返回的操作系统,在变量中设置行尾,并从中构建字符串。即:

if (navigator.appVersion.indexOf("Win")!=-1){
    OSName="Windows";
    linebreak = "\r\n";
} // etc ...

如果出于某种原因确实需要break元素,为什么不:

var br=document.createElement('br');

如果出于某种原因确实需要break元素,为什么不:

var br=document.createElement('br');

2015年更新:从下面可以看到,即使在2011年,Chrome和Firefox在所有平台上都使用了
\n
。Opera和IE在Windows上使用了
\r\n
。从那时起,Opera转向了像Chrome这样的WebKit,因此可能使用
\n
。IE8是最后一个在文本区域使用
\r\n
的IE;从IE9开始,IE也只使用
\n
。还没有测试过手机浏览器


参加聚会的时间很晚,但如果您真的想知道浏览器在
textarea
s中使用了什么行分隔符之类的字符(即使在同一操作系统上,浏览器中的字符也会有所不同),您可以通过一个诡计来了解:

function getLineBreakSequence() {
    var div, ta, text;

    div = document.createElement("div");
    div.innerHTML = "<textarea>one\ntwo</textarea>";
    ta = div.firstChild;
    text = ta.value;
    return text.indexOf("\r") >= 0 ? "\r\n" : "\n";
}
函数getLineBreakSequence(){ 变量div,ta,text; div=document.createElement(“div”); div.innerHTML=“一个\n两个”; ta=第一个孩子; text=ta.value; 返回文本。indexOf(“\r”)>=0?\r\n:“\n”; } 这是因为使用
\r\n
的浏览器在解析HTML字符串时会动态转换
\n
。下面是一个你可以自己尝试使用你最喜欢的浏览器的方法。在IE和Opera中(即使Opera在*nix上运行),您会发现它是
\r\n
。在Chrome、Firefox和Safari(甚至在Windows上运行)上,您会发现它是
\n


这就是说,我的经验是插入
\n
(例如,当分配给
属性时,而不是上面的HTML字符串位)即使在通常使用
\r\n
的浏览器上也能工作。但这并不意味着没有边缘案例,我必须承认我没有任何规律性地这样做(在
textarea
s中插入换行符),因此,如果有问题,我真的应该在某些浏览器上使用
\r\n
,我可能就是没有找到它们。

2015年更新:正如你从下面看到的,早在2011年,Chrome和Firefox就在所有平台上使用
\n
。Opera和IE在Windows上使用了
\r\n
。从那时起,Opera转向了像Chrome这样的WebKit,因此可能使用
\n
。IE8是最后一个在文本区域使用
\r\n
的IE;从IE9开始,IE也只使用
\n
。还没有测试过手机浏览器


参加聚会的时间很晚,但如果您真的想知道浏览器在
textarea
s中使用了什么行分隔符之类的字符(即使在同一操作系统上,浏览器中的字符也会有所不同),您可以通过一个诡计来了解:

function getLineBreakSequence() {
    var div, ta, text;

    div = document.createElement("div");
    div.innerHTML = "<textarea>one\ntwo</textarea>";
    ta = div.firstChild;
    text = ta.value;
    return text.indexOf("\r") >= 0 ? "\r\n" : "\n";
}
函数getLineBreakSequence(){ 变量div,ta,text; div=document.createElement(“div”); div.innerHTML=“一个\n两个”; ta=第一个孩子; text=ta.value; 返回文本。indexOf(“\r”)>=0?\r\n:“\n”; } 这是因为使用
\r\n
的浏览器在解析HTML字符串时会动态转换
\n
。下面是一个你可以自己尝试使用你最喜欢的浏览器的方法。在IE和Opera中(即使Opera在*nix上运行),您会发现它是
\r\n
。在Chrome、Firefox和Safari(甚至在Windows上运行)上,您会发现它是
\n


这就是说,我的经验是插入
\n
(例如,当分配给
属性时,而不是上面的HTML字符串位)即使在通常使用
\r\n
的浏览器上也能工作。但这并不意味着没有边缘案例,我必须承认我没有任何规律性地这样做(在
textarea
s中插入换行符),因此如果有问题,我真的应该在某些浏览器上使用
\r\n
,我可能还没有找到它们。

只是好奇它为什么重要?请注意,分配给textContent或innerText属性的字符串没有被解析,而是被视为文本。此外,它是一个专有的Microsoft扩展(没有标准),并非所有浏览器都支持它。textContent不是所有浏览器都支持的属性,但是