【发布时间】:2014-10-17 01:08:28
【问题描述】:
我正在编写一个小型库,以 HTML 格式以并排格式呈现 Git 差异。正如人们所期望的那样,左侧面板代表上一次提交,右侧面板代表当前提交。
我希望任一面板都能够使用浏览器的复制和粘贴功能,以便用户可以抓取其中的数据。我发现我排列 HTML 的方式(至少在 Firefox/Ubuntu 中)会导致粘贴的输出在每行末尾有两个换行符,而不是我预期的零或一个。
这是来自我的渲染器的代码演示文稿:
<div class="line diff-line ">
<pre> */</pre>
</div>
<div class="line diff-line ">
<pre>function deletePost(PDO $pdo, $postId)</pre>
</div>
<div class="line diff-line ">
<pre>{</pre>
</div>
<div class="line diff-line diff-line-added">
<pre> $sqls = array(</pre>
</div>
<div class="line diff-line diff-line-added">
<pre> // Delete comments first, to remove the foreign key objection</pre>
</div>
<div class="line diff-line diff-line-added">
<pre> "DELETE FROM</pre>
</div>
<div class="line diff-line diff-line-added">
<pre> comment</pre>
</div>
<div class="line diff-line diff-line-added">
<pre> WHERE</pre>
</div>
<div class="line diff-line diff-line-added">
<pre> post_id = :id",</pre>
</div>
<div class="line diff-line diff-line-added">
<pre> // Now we can delete the post</pre>
</div>
<div> 块是红鲱鱼,事实证明 - 如果它们被剥离,会遇到相同的行为:
<pre> */</pre>
<pre>function deletePost(PDO $pdo, $postId)</pre>
<pre>{</pre>
<pre> $sqls = array(</pre>
<pre> // Delete comments first, to remove the foreign key objection</pre>
<pre> "DELETE FROM</pre>
<pre> comment</pre>
<pre> WHERE</pre>
<pre> post_id = :id",</pre>
<pre> // Now we can delete the post</pre>
(我不建议将<div>s 从最终解决方案中删除 - 我将它们删除,因为我相信它们不是问题的根源)。
现在,我怀疑一个解决方法是让一组<pre> 标记包裹所有内容,并注意所呈现的差异之外的空白。但是,按照我的安排,我想知道是否有一个 CSS 设置可以放在<pre> 标签上,以防止它们添加不属于那里的空行?
无论如何我都对这种行为感到困惑——因为它们是块级的,我可以理解为什么它们最终会生成一个 NL,但是两个相当奇怪。
【问题讨论】:
-
你在用什么编辑器粘贴文本。我刚试过我的,看起来还可以。我没有得到 2 条断线
-
防止他们添加不属于那里的空行? - 浏览器将呈现那里的内容,所以这有点荒谬。
-
我刚刚用 Chrome 检查了小提琴。每行有 16 像素高度,我没有看到添加任何额外的空白行。你在火狐上吗?
-
你的小提琴没有多余的线条,但我不知道我应该使用什么文本编辑器? (我尝试了 jsfiddle、SO 答案和记事本。)
-
这正是块元素的作用,所以是的,将整个内容包裹在
<pre>中,并用<span>包裹每一行。顺便说一句,我认为 GitHub 使用了一个表格,这似乎可行。
标签: html css copy-paste pre