Html 如何在所有浏览器中防止连字符断行

Html 如何在所有浏览器中防止连字符断行,html,css,Html,Css,我们有自己的工作。我们的最终用户将通过该编辑器输入一些长文章。我们需要一种方法来防止这些文章的连字符断线 有没有一种方法可以防止所有浏览器中的连字符断行 或者CKEditor是否有防止这种情况发生的选项?‑,这是一种Unicode非中断连字符(U+2011) HTML:‑或‑ 另请参见:一种解决方案是使用额外的span标记和空白CSS属性。只需定义如下所示的类: .nowrap { white-space: nowrap; } 然后在连字符文本周围添加一个带有该类

我们有自己的工作。我们的最终用户将通过该编辑器输入一些长文章。我们需要一种方法来防止这些文章的连字符断线

有没有一种方法可以防止所有浏览器中的连字符断行

或者CKEditor是否有防止这种情况发生的选项?

,这是一种Unicode非中断连字符(U+2011)

HTML:


另请参见:

一种解决方案是使用额外的
span
标记和
空白
CSS属性。只需定义如下所示的类:

.nowrap {
    white-space: nowrap;
}
然后在连字符文本周围添加一个带有该类的span

<p>This is the <span class="nowrap">anti-inflammable</span> model</p>
这是一种易燃型号


这种方法在所有浏览器中都应该可以正常工作-这里列出的错误实现是针对
空白
属性的其他值:

恐怕没有比将文本拆分为“单词”(由空白分隔的非空白字符序列)并包装每个字符更简单的方法了在
nobr
标记中包含连字符的“word”。因此像
bla-bla-foo-bar-bla-bla
这样的输入数据将变成
bla-bla-foo-bar-bla-bla

你甚至可以考虑插入“<代码> NBRB/COD>标记”,只要“单词”包含任何字母和数字。原因是一些浏览器甚至会断开字符串,如“2/3”或“F(0)”(参见我的页面)。

< P>试试这个CSS:

word-break: break-all; 
-webkit-hyphens:none;
-moz-hyphens: none; 
hyphens: none;

如果不编辑每个HTML实例,则无法完成此操作。因此,我编写了一些JavaScript代码来替换它们:

jQuery:

//将连字符替换为非断开的连字符
$txt=$(“#块视图视频块h2”);
$txt.text($txt.text().replace(/-/g,‑');
香草JavaScript:

功能非BRHypens(id){
var str=document.getElementById(id).innerHTML;
var txt=str.replace(/-/g,‑’);
document.getElementById(id).innerHTML=txt;
}
在连字符周围使用字符(
&8288;
)。它也适用于Internet Explorer

修复特定连字符

功能修复冰淇淋(文本){
返回文本。替换(/ice-cream/g,'ice&&8288;-&&8288;cream');
}
或者一切

函数固定连字符(文本){
返回文本。替换(/(\S+)-(\S+)/g,$1&&8288;-&&8288;$2');
}

非常感谢您的回复。但我们需要做的是防止最终用户在ckeditor上输入所有内容时出现断行。我们不能告诉所有人输入unicode非断行连字符。是否有其他方法防止断行?或者ckeditor是否有自动转换连字符的选项?再次感谢你可以做一个简单的字符串替换,将
-
替换为
-
。注意对U+2011的字体支持有限,这在理论上肯定比在所有地方粘贴
nobr
标签更优雅,但在实践中效果不太好。例如,将其显示为短划线,Safari会在其周围增加比短划线更多的空间正常破折号,大多数文本编辑器将其显示为问号、方框或其他无意义的字符。@jakev我将使用derekerdmann建议的
空白:nowrap
。顺便说一句,在FF/Win7上,在Firefox外部复制粘贴时,害羞的破折号似乎会转换为常规破折号,即使目标应用程序支持Unicode。谢谢非常感谢您的回复。但是我们的文本内容将由最终用户通过ckeditor输入。我们不能告诉每个人在单词周围添加。还有其他方法吗?谢谢anyway@Alan-他们添加了什么样的内容不能在hypens中中断?如果它是一个标题或一些其他元素,那么将
空白:nowrap
应用于整个容器。否则,就让它去吧;首先,没有理由防止在一般内容中使用连字符换行,其次,除非你愿意使用CKEditor,否则你无法自动获得你想要的内容。在很多情况下连字符后面的换行符是错误的,或者是非常错误的,比如在“F-1”中,或者当连字符用作一元负号时,比如“-42°”(人们用这种方式,因为他们不知道负号)。这是可行的,但它的工作原理是不直观的,因为连字符不是空白。
更清楚。
nobr
标记不是标准的,W3C强烈反对。请看,与任何其他方法不同,
nobr
标记在所有浏览器上都有效,即使在禁用样式表时也有效,并且独立工作对特殊字符的支持不足。它真的有问题吗?为什么没有?@JukkaK.Korpela问题是现代浏览器可能决定放弃对它的支持,并且可以在不违反HTML规范的情况下这样做。这是一个“应该”功能,这只是一个建议实现的东西。关于样式表,如果用户禁用了样式表,那么他们希望没有任何样式。我已经开发网站10年了,甚至不知道你可以在浏览器中禁用样式表。到底是谁做的(除了那些在这个时代同样会选择在默认情况下禁用JavaScript的人之外)?如果我们需要如此迂腐,还有其他解决方案吗?虽然这段代码片段可以解决这个问题,但确实有助于提高您文章的质量。请记住,您将在将来为读者回答这个问题,而这些人可能不知道您的代码建议的原因。同时,请尽量不要拥挤您的文章带有解释性注释的代码,这降低了代码和解释的可读性!哇,这是简单而正确的答案,它被否决了,疯狂的错误答案有100多个赞成票。它还有助于添加空白:nowrap。问题