【问题标题】:How can I suggest line breaks in HTML text without breaking copy+paste?如何在不破坏复制+粘贴的情况下建议 HTML 文本中的换行符?
【发布时间】:2015-07-31 04:23:43
【问题描述】:

我有一个显示包含电子邮件地址的表格的表单,我想向浏览器提示电子邮件地址可以在@ 之前换行;例如,所以somelongemail@somelargedomain.com 将换行到somelongemail<break>@somelargedomain.com

“标准”解决方案似乎引入了zero width space,但如果有人试图复制+粘贴电子邮件地址,这将导致问题(即,因为他们将粘贴电子邮件example<zero-width-space>@example.com,这不是合理的电子邮件)。

如何在不破坏复制+粘贴的情况下制作自动换行提示?

例如:

table {
  border: 1px solid grey;
  width: 50px;
  margin-bottom: 10px;
  border-spacing: 0;
  border-collapse: collapse;
}

td {
  border: 1px solid grey;
}
<table>
  <tr><td>without any break hints</td><td>somelongemail@domain.com</td></tr>
</table>

<table>
  <tr><td>with a zero-width space</td><td>somelongemail&#8203;@domain.com</td></tr>
</table>

【问题讨论】:

  • 复制你的第二个选项给了我一个完全合理的“somelongemail​@domain.com”,我的电子邮件提供商读得很好。
  • 唉,这就是零宽度空间的困难:你看不到它,但它就在那里。复制mail​@domain 部分,然后使用pbpaste | od -a 获取十六进制转储,至少我的机器产生:m a i l ? 80 8b @ d o m a i n(注意? 80 8b)。

标签: html css


【解决方案1】:

您可以使用&lt;wbr&gt; 标签。它自然有decent support,减去IE。

编辑:添加了可能的 IE 修复,它适用于 IE9+。

table {
  border: 1px solid grey;
  width: 50px;
  margin-bottom: 10px;
  border-spacing: 0;
  border-collapse: collapse;
}

td {
  border: 1px solid grey;
}

table:last-of-type {background-color: green; color: #FFF;}

/* possible IE fix? */
wbr:after {
    content:"";
    display: block;
}
<table>
  <tr><td>without any break hints</td><td>somelongemail@domain.com</td></tr>
</table>

<table>
  <tr><td>with a zero-width space</td><td>somelongemail&#8203;@domain.com</td></tr>
</table>

<table>
  <tr><td>using the &lt;wbr&gt; tag</td><td>somelongemail<wbr>@domain.com</td></tr>
</table>

【讨论】:

  • 刚刚意识到 IE 修复并没有做太多,而是强制换行。回实验室!
【解决方案2】:

How to break line in JavaScript?

我想这会有所帮助。使用正则表达式在 @ 之前插入字符。

编辑:

为此,您需要 javascript。您可以通过在 @ 之前放置一个 %0A 字符来换行,并为复制事件添加一个侦听器,以便您可以操作剪贴板并删除该字符。

【讨论】:

  • 好像会有同样的复制+粘贴问题……不是吗?
  • 你试过了吗?你也可以试试这个stackoverflow.com/questions/24488950/…
  • 是的,换行符与文本的其余部分一起复制。
  • 经过简短搜索后,我很确定这就是您要寻找的内容:stackoverflow.com/questions/2026335/…
  • 我讨厌如此矛盾,但这似乎与我正在寻找的完全相反?即,如果页面中出现零宽度空格(或其他字符),我希望它出现在复制的文本中。
猜你喜欢
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
  • 2022-11-08
  • 1970-01-01
  • 2020-01-11
  • 1970-01-01
  • 1970-01-01
  • 2015-06-05
相关资源
最近更新 更多