gpt4 book ai didi

javascript - ngx-quill/quill.js 从innerHTML中去除自定义印迹

转载 作者:行者123 更新时间:2023-12-02 23:30:28 25 4
gpt4 key购买 nike

标题可能会产生误导,但我不知道如何更好地命名它。我想要实现的是像 twitter-widget 一样嵌入我的自定义印迹。为此,我创建了示例“渲染器”类:

class TestRenderer {
render(id: number, node: HTMLElement) {
node.innerHTML = `<h1>ELEMENT ${id}</h1>`;
}
}

以及扩展 BlockEmbed 的普通 Quill blot 类

export class TestBlot extends BlockEmbed {
static blotName = 'test';
static tagName = 'test-embeded';
static className = 'test-embeded';

static create(id: any) {
const node = super.create();
node.dataset.id = id;
RENDERER.render(id, node);


node.addEventListener('click', (e) => {
e.preventDefault();
RENDERER.render(666, node);
});

return node;
}

static value(domNode: HTMLElement) {
return domNode.dataset.id;
}
}

我认为我使用了与 twitter-widget tweet-embed 类似的方法,这是我从官方鹅毛笔羊皮纸教程中获得的,但 HTML 输出不同。 twitter 被剥离了所有内部 HTML,它很简单:

<twitter-embeded class="twitter-embeded" data-id="464454167226904576" contenteditable="false" style="cursor: pointer;"></twitter-embeded>

我的自定义印迹元素如下所示:

<test-embeded class="test-embeded" data-id="742878714"><h1>ELEMENT 742878714</h1></test-embeded>

当我手动删除<h1>ELEMENT 742878714</h1>时编辑器仍然可以识别其内容并正确显示所有内容。这是非常低效的方式,我想避免检查整个 Quill HTML 内容并从 innerHTML 中删除所有自定义元素。

最佳答案

好吧,看起来羽毛笔的行为很奇怪。这只是 Quill 处理异步请求的方式,所以只需更改为“renderer”类就解决了我的问题:

export class TestRenderer {
render(id: number, node: HTMLElement) {
node.innerHTML = ``;
setTimeout(() => {
node.innerHTML = `<h1>ELEMENT ${id}</h1>`;
}, 1000);
}
}

输出符合预期:

<test-embeded class="test-embeded" data-id="108962878"></test-embeded><p><br></p>

已关闭。

关于javascript - ngx-quill/quill.js 从innerHTML中去除自定义印迹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56527353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com