【问题标题】:Do Web Pages Create Newlines on their Own?网页自己创建换行符吗?
【发布时间】:2011-10-03 23:12:11
【问题描述】:

当网页上的文本因为到达模板末尾而换行到下一行时,是否在代码中创建了一个不同于 <br> 的隐藏换行符?

我正在尝试在 Javascript 中执行 .replace(),但它找不到跨越两行的短语。有什么办法可以解决这个问题,这样我的 Javascript 代码就可以工作了吗?

【问题讨论】:

  • 不,不是。你能发布你的JS吗?
  • 在我的测试中,replace() 似乎并不关心换行,也不会受到换行的影响。您能否在JS Fiddle 或类似网站上发布您的 代表性示例代码?

标签: javascript html replace newline


【解决方案1】:

没有。在浏览器内(甚至在单个元素内)自动换行不会导致将换行符插入到标记中。

在 JavaScript 中也确实没有检测自动换行的好方法。

您可能想发布另一个关于您的目标的问题,以便我们就如何实现您真正想要的目标提出建议。

【讨论】:

    【解决方案2】:

    换行符(\n<br />)与文本布局引擎的自动文本换行不同。 \n<br /> 强制 布局引擎换行并且可以检测为字符 (\n) 或标记 (<br />),但自动换行不会产生新字符或标签。您只能测试容器的高度以猜测您是否正在处理自动换行的文本。

    【讨论】:

    • 标记中的换行符\n 不会“[强制]布局引擎换行”,它会被忽略。在HTML, whitespace 中,除非它在 ​​PRE 元素中,否则它会被折叠成一个空格。
    • @Rob 是的,这个特定的示例在 HTML 的上下文中放错了位置,应该更清楚地表明它是一般换行和布局引擎的示例。
    【解决方案3】:

    在表达式的一部分中包含空格:

    s.replace(/stuff on line1[\s]+stuff on line 2/, 'replacement');
    

    或者只是换行符\n\r

    s.replace(/stuff on line1[\\n\\r]+stuff on line 2/, 'replacement');
    

    有一个多行标志(/m),但据报道是not universal

    【讨论】:

      猜你喜欢
      • 2019-10-08
      • 2011-06-21
      • 2014-12-22
      • 1970-01-01
      • 2021-08-06
      • 2015-04-13
      • 2012-12-03
      • 1970-01-01
      • 2012-04-18
      相关资源
      最近更新 更多