你好 kynic,
onPageChange 的用法可能有点太宽泛了(并且在加载/更新帖子时可能不可靠)。
你可以改用 decorateCookedElement。它会在每个渲染后的帖子元素上调用。
此外,这里有一个禁用邮件指示器的方法。这只是一个阻止包含 HTML 的技巧。如果你好奇,可以在这里查看原始代码。
<script type="text/discourse-plugin" version="0.8">
api.reopenWidget("post-meta-data", {
html(attrs) {
if (!attrs.via_email) {
return this._super(attrs);
}
// 不生成“post-email-indicator”小部件。
attrs.via_email = false;
const html = this._super(attrs);
attrs.via_email = true;
return html;
}
})
api.decorateCookedElement((element, helper) => {
if (helper?.getModel().via_email) {
element.querySelector('details.elided').remove();
}
}, { onlyStream: true });
</script>
你也可以只使用 CSS 来隐藏它们。
.post-info.via-email,
.cooked details.elided {
display: none;
}