当前位置:  开发笔记 > 编程语言 > 正文

如何强制打破不易碎的琴弦?

如何解决《如何强制打破不易碎的琴弦?》经验,为你挑选了2个好方法。

我有一个HTML页面,我从数据库中包含的数据生成.数据库有时包含浏览器无法破解的长字符串,因为字符串不包含可破坏的字符(空格,点,逗号等).

有没有办法解决这个使用HTML,CSS甚至JavaScript?

有关问题的示例,请参阅此链接.



1> jeroen..:

是的,你可以,只需将框的css属性设置为:

.some_selector {
    word-wrap: break-word;
}

编辑:一些测试显示它确实可以使用div或ap - 块级元素 - 但它不能用于表格单元格,也不能将div放在表格单元格中.

经过测试,适用于IE6,IE7,IE8,Firefox 3.5.3Chrome.

作品:

aaaaaaaaaaaaaaaaaaaaaaddddddddddddddddddddddddddddddddddddddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa


较旧的非MSIE浏览器不支持"自动换行:break-word",但您可以将其与"overflow:hidden"配对,以便在可识别的浏览器的可用空间末尾截断长词. "自动换行"设置并提供(相对)完整的CSS解决方案.

2> gnarf..:

根据这篇文章和这一个,以及:所述"害羞连字符"或"软连字符"可以写在HTML为:­/ ­/ ­(173 DEC = AD十六进制).它们都转换为U + 00AD字符.

JavaScript textContentnodeValueDOM文本节点不是"实体编码" - 它们只包含实际实体.因此,为了编写这些字符,您必须自己编码:这\xAD是在JavaScript字符串中编写相同字符的简单方法. String.fromCharCode(173)也会有用.

基于你自己非常好的答案 - 一个jQuery插件版本:

$.fn.replaceInText = function(oldText, newText) {
  // contents() gets all child dom nodes -- each lets us operate on them
  this.contents().each(function() {
    if (this.nodeType == 3) { // text node found, do the replacement
        if (this.textContent) {
            this.textContent = this.textContent.replace(oldText, newText);
        } else { // support to IE
            this.nodeValue = this.nodeValue.replace(oldText, newText);
        }
    } else {
      // other types of nodes - scan them for same replace
      $(this).replaceInText(oldText, newText);
    }
  });
  return this;
};

$(function() {
    $('div').replaceInText(/\w{10}/g, "$&\xAD");
});

附注:

我认为这应该发生的地方不是在JavaScript中 - 它应该在服务器端代码中.如果这只是用于显示数据的页面 - 您可以在将文本发送到浏览器之前轻松地对文本执行类似的正则表达式替换.然而,JavaScript解决方案提供了一个优势(或者取决于您希望如何看待它的缺点) - 在脚本执行之前,它不会向数据添加任何无关的字符,这意味着任何机器人抓取HTML输出以获取数据都不会看到害羞的连字符.尽管HTML规范将其解释为"连字符提示"和不可见的字符,但它在Unicode世界的其他部分中无法保证:( 引用Unicode标准,通过我链接的第二篇文章)

U + 00AD软连字符表示连字点,当要连字时,首选换行符.根据脚本,当发生换行符时,此字符的可见呈现可能不同(例如,在某些脚本中,它呈现为连字符 - 而在其他脚本中,它可能是不可见的).

另一个注意事项: 在其他SO问题中找到- 似乎" 零宽度空间 "字符/ / U+200b是您可能想要探索的另一个选项.这将是\x20\x0b一个javascript字符串.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有