【问题标题】:Keep text format when copy/paste from Angular Application从 Angular 应用程序复制/粘贴时保持文本格式
【发布时间】:2019-07-16 14:54:09
【问题描述】:

我意识到,当我尝试将文本从 Angular 应用程序复制/粘贴到任何文本编辑器软件(即 Microsoft Word)时,所有文本都会丢失原始格式。

我以角材料网站为例:https://material.angular.io/

当我在 Microsoft Word 中复制文本和过去时:

也就是说,粘贴的文本失去了居中对齐、颜色和字体类型。

有没有办法保持网站格式?我知道 Angular Material 使用的字体与文本编辑器不同,但还有其他东西可以保留(即对齐、颜色等)。

我已经使用 Angular 8 + Angular Material 开始了一个项目,但我遇到了同样的问题。

【问题讨论】:

  • 不,没有办法,因为这些是应用在网页上的级联样式表。

标签: css angular


【解决方案1】:

好吧,您不太可能得到直接的复制/粘贴操作来执行您的请求。

为什么它不能按预期工作:

例如,从 MS Word 中复制和粘贴,您会得到 Rich Text,其中所有格式都是数据负载的一部分。当您将其复制到剪贴板时,所有额外的样式元数据都会与文本一起出现。如果您将该数据粘贴到富文本编辑器(而不是直接的 text input)中,例如 Wordpress 的管理员,该编辑器包会将您看不到的文本元数据转换为等效的 HTML 样式。

然而,当您从 HTML(在您的浏览器中)复制时,您得到的只是没有所有“丰富”格式的文本。发生这种情况是因为浏览器使用外部上下文(如DOM 位置、tag 类型和CSS)将 HTML 内容样式化为呈现给您的内容。

富文本副本仅供您使用

Chrome 和 Firefox 的多个浏览器插件会拦截您的复制请求,创建格式,然后将其粘贴到剪贴板。只需向 Google 寻求建议即可。

项目所有用户的富文本副本

不幸的是,这更复杂。您需要编写代码来执行以下操作(answer 有一个很好的例子):

  1. 找出用户试图复制的内容(通常映射到选定的文本)。

  2. 将该内容转换为富文本格式。上面的示例只是简单地复制了 HTML,但不会让外部 CSS 应用样式。 Quill 之类的软件包可能让您可以选择恢复富文本。

  3. 将转换后的文本复制到用户的本地剪贴板。您不应该劫持浏览器命令来执行此操作,这就是您经常看到“复制到剪贴板”按钮来执行此操作的原因。在大多数现代浏览器中,您可以使用Clipboard API 将内容移动到用户的剪贴板。

  4. 哦,您需要用户的许可才能执行所有这些操作,因为主动与用户的剪贴板交互会带来相当大的安全问题。

【讨论】:

    猜你喜欢
    • 2016-02-20
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多