- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 @vueup/vue-quill ^1.0.0-beta.7
在我的控制面板管理员上基于 vue ^3.2.29
.
不幸的是,我注意到加载 HTML 内容对我不起作用。羽毛笔转换 <div>
标记为 <p>
标签对我来说,还删除了 classy 和 css 样式,这破坏了内容的外观。在后面,我使用 Laravel。
谁能帮我解决这个问题?我坐了一整天都无济于事。
<template>
// [...]
<QuillEditor
ref="mainContent"
v-model:content="form.content"
style="min-height: 300px"
:options="editorOptions"
theme="snow"
content-type="html"
output="html"
@text-change="countMainContent"
/>
// [...]
</template>
<script>
import { QuillEditor, Quill } from "@vueup/vue-quill";
import "@vueup/vue-quill/dist/vue-quill.snow.css";
import BlotFormatter from "quill-blot-formatter";
import QuillImageDropAndPaste, { ImageData } from "quill-image-drop-and-paste";
import ArticleCategoryField from "../forms/ArticleCategoryField.vue";
import htmlEditButton from "quill-html-edit-button";
import useVuelidate from "@vuelidate/core";
import { required } from "../../utils/i18n-validators";
Quill.register({
"modules/blotFormatter": BlotFormatter,
"modules/htmlEditButton": htmlEditButton,
"modules/imageDropAndPaste": QuillImageDropAndPaste,
});
// [...]
data() {
return {
// [...]
editorOptions: {
handlers: {
// handlers object will be merged with default handlers object
link: function (value) {
if (value) {
var href = prompt("Enter the URL");
this.quill.format("link", href);
} else {
this.quill.format("link", false);
}
},
},
modules: {
toolbar: [
["bold", "italic", "underline", "strike"], // toggled buttons
["blockquote", "code-block"],
[{ header: 1 }, { header: 2 }], // custom button values
[{ list: "ordered" }, { list: "bullet" }],
[{ script: "sub" }, { script: "super" }], // superscript/subscript
[{ indent: "-1" }, { indent: "+1" }], // outdent/indent
[{ direction: "rtl" }], // text direction
[{ size: ["small", false, "large", "huge"] }], // custom dropdown
[{ header: [1, 2, 3, 4, 5, 6, false] }],
[{ color: [] }, { background: [] }], // dropdown with defaults from theme
[{ font: [] }],
[{ align: [] }],
["image", "link", "video"],
["clean"], // remove formatting button
],
blotFormatter: {},
htmlEditButton: {
debug: false,
msg: "Edytuj zawartość przy pomocy HTML",
cancelText: "Anuluj",
buttonTitle: "Pokaż kod źródłowy HTML",
},
imageDropAndPaste: {
handler: this.imageHandler,
},
},
},
// [...]
}
}
// [...]
methods: {
getArticle() {
if (this.articleId) {
this.$axios
.get("article/" + this.articleId, {
headers: {
Accept: "application/json",
Authorization: `Bearer ${this.$store.state.auth.token}`,
},
})
.then((response) => {
this.form.title = response.data.article.title;
this.form.mainImage =
response.data.article.uploaded_file_id;
this.form.category =
response.data.article.categories[0].id ?? 0;
this.$refs.mainContent.pasteHTML(
response.data.article.content
);
this.form.articleGallery = this.prepareGallery(
response.data.article.images
);
})
.catch((error) => {
if (process.env.MIX_APP_DEBUG)
this.$toast.error(error.message);
throw new Error(error);
});
}
},
// [...]
最佳答案
我知道有点晚了。但是发布这个是为了帮助那些访问这个问题的人。我有同样的问题。当我尝试在编辑页面上加载内容以使用 @vueup/vue-quill
编辑器时,出现了一些问题。我可以使用 setContents()
、setHTML()
等加载 delta、html 和纯文本,但在那之后,问题是当我尝试在同一个编辑器 js 中键入时发生错误。我找到的唯一解决方案是自己实现羽毛笔。分享我的经验以帮助他人。
//do bootstrap if needed
// import './bootstrap';
import { createApp } from 'vue';
import { watch, ref, nextTick } from 'vue'
import axios from 'axios';
import Quill from "quill";
import "quill/dist/quill.core.css";
import "quill/dist/quill.bubble.css";
import "quill/dist/quill.snow.css";
createApp({
data() {
return {
mainContentEditor: null,
mainContentEditorValue: '',
}
},
mounted() {
this.initMainContentEditor();
//call this to get article on load
this.getArticle();
},
methods: {
//initiate the main content editor
initMainContentEditor() {
var _this = this;
this.mainContentEditor = new Quill(this.$refs.mainContentEditor, {
modules: {
toolbar: [
[
{
header: [1, 2, 3, 4, false],
},
],
["bold", "italic", "underline", "link"],
],
},
//theme: 'bubble',
theme: "snow",
formats: ["bold", "underline", "header", "italic", "link"],
placeholder: "Type something in here!",
});
//register the event handler
this.mainContentEditor.on("text-change", function () {
_this.mainContentEditorChanged();
});
},
//this method is called when the editor changes its value
mainContentEditorChanged() {
console.log("main content changed!");
// do somethign with it like assign it to mainContentEditorValue
this.mainContentEditorValue = this.mainContentEditor.root.innerHTML;
},
getArticle() {
//do the api call to get the article response.
//once you get the respose
// assign the html content to quill editor
// check getArticle() method on question to fill this part
//replace
// this.$refs.mainContent.pasteHTML(
// response.data.article.content
// );
// with this
this.mainContentEditor.root.innerHTML = response.data.article.content;
}
}
}).mount('#app')
html/模板
<div id="app">
<div ref="mainContentEditor"></div>
</div>
你可以把它做成一个组件并重用它。我分享它只是为了展示一个有效的实现。
关于javascript - 如何将 html 内容加载到 Quill 所见即所得编辑器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71472060/
假设我想要一个 AtomicText类似于默认 Link 的印迹印迹但不可变,只能作为一个整体删除。进一步来说: 光标可以在AtomicText的字符之间. 可以选择 AtomicText 的部分内容
我正在使用 Quill 编辑器。到目前为止还不错。我的问题是有什么方法可以通过工具栏中的按钮使 Quill Editor 全屏显示(一种无干扰模式)? 如果不是,我该如何继续自己实现? 最佳答案 要全
我知道在 Quill 编辑器的实例化中,有一个占位符选项。有没有办法在编辑器实例化后动态更改这个占位符? 最佳答案 占位符使用 CSS 规则实现: .ql-editor::before { co
我有一个显示富文本数据的模板。当用户单击编辑时,我将模板转换为可编辑的 Quill 编辑器,如下所示: 'click #editNote': (e, t) -> note = t.find
刚开始使用 Quill 并发现它非常有用。我的项目需要纯文本编辑。具体来说,我使用 quill 作为输入 YAML 代码的表单。破折号“-”是 YAML 中的关键项。问题是 Quill 自动将行格式化
我正在尝试在 quill 编辑器的特定位置插入 anchor 文本。 var fullEditor = new Quill('#m_wiki_textarea', { m
我正在尝试向 Quill 编辑器工具栏添加对齐按钮。 工具栏documentation不是很详细。它展示了如何选择对齐选项,但我想要一组并排的切换按钮。这可能吗? 最佳答案 您可以执行 align:
我正在尝试自定义 Quill editor满足我的需要。我设法实现并插入自定义印迹,如 https://quilljs.com/guides/cloning-medium-with-parchment
我有一个将 Quill 编辑器的内容发布到 PHP 脚本的表单。然后 PHP 脚本将文本保存到数据库中。以后可以将相同的文本加载到 Quill 编辑器中。这一切工作正常并按预期显示。 仅供引用,我使用
是否可以使用 Quill (link) 打印文档或导出为 pdf。如果是这样,怎么办? 最佳答案 不属于 Quill core . 您必须编写一个自定义模块来将 Quill 的 Delta 或原始 H
我必须创建在线文字编辑器,其中包括基本格式、内联注释。为此,我使用 quill.js 编辑器,但无法在 quill.js 编辑器中添加注释。 最佳答案 就我而言,我为此创建了一个自定义解决方案。下面是
我们如何在 Quill.js 中创建新主题?我们是否必须扩展现有的? 我只想更新外观,而不是功能,所以理论上我可以为默认的 Snow 主题添加一堆覆盖,但这并不理想。 那么 - 我们如何以及在哪里创建
我想防止 Quill 编辑器中的工具栏按钮具有 tabindex。我怎样才能做到这一点? 最佳答案 Quill 提供了两种获取 toolbar 的方法位于定制范围的两端。一种是您传入一组您想要的格式,
我正在使用最新版本的 quill.js,并且想知道是否有一种方法可以覆盖 Quill 在生成编辑器工具栏时使用的 svg 图标(对于气泡主题,如果这很重要。) 我试过四处寻找,看看在源代码中定义图标的
我已经成功地在 angular 7 中设置了 ngx-quill,我需要创建一个自定义文本印迹,它看起来如下(简化): ... /*** Custom blot: [its editable text
更新:当我意识到 PrimeNg 有一个 quill 实现并且我已经在使用 PrimeNg 时,我放弃了。起初没有工作,但升级到 angular 7 和 ngrx 7 beta 修复了问题。 http
我正在使用 angular 4 和 quill 编辑器。但我收到了 quill Invalid Quill container 的错误消息.我更改了容器的名称,但它仍然返回错误并且无法识别容器 ID。
如何将 Delta 转换为纯 HTML?我使用 Quill 作为富文本编辑器,但我不确定如何在 HTML 上下文中显示现有的 Delta。创建多个 Quill 实例是不合理的,但我想不出更好的方法。
标题可能会产生误导,但我不知道如何更好地命名它。我想要实现的是像 twitter-widget 一样嵌入我的自定义印迹。为此,我创建了示例“渲染器”类: class TestRenderer {
我创建了一种将 Quill 文本保存到数据库的方法。每次用户单击已保存的文档时,它都会从数据库中提取已保存的 Quill 文本,并将文本显示在 Quill 文本编辑器中。此时,如果我触发撤消功能,它将
我是一名优秀的程序员,十分优秀!