如何禁用入站邮件模态框

你好 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;
}