好的,总的来说,这种方法效果很好,解释也很棒。非常感谢您的额外付出。
在用户基础上工作很简单——我们只需像这样检查给定的用户名:
const isUser1 = args.model.username == "User1"
component.setProperties({isUser1})
但是,我们在 CSS 方面遇到一个问题——我们希望仅针对这些用户更改用户页面的外观。
目前,我们通过与之前相同的代码来实现这一点:
<script type="text/discourse-plugin" version="0.8">
api.onPageChange(() =>{
window.onload = determineUser();
});
async function determineUser() {
await sleep(50);
var pageURL = document.querySelector("meta[property='og:url']").getAttribute("content");
var isUserPage = pageURL.includes("https://www.siteurl.com/u/");
var isUser1 = pageURL.includes("u/User1/");
document.body.className = document.body.className.replace(" user-page-animated","");
if(isUserPage)
{
if(isUser1)
{
document.body.className += ' user-page-animated';
}
}
}
function sleep(ms)
{
return new Promise(resolve => setTimeout(resolve, ms));
}
</script>
这使我们能够为每个新用户简单地复制粘贴“User1”代码,但依赖于每次页面加载后 50 毫秒的延迟才能触发,这会显示给最终用户(如果删除,则因某种原因不起作用)。
是否有任何方法可以将此向 body 添加类的功能也集成到您提供的代码中,以便我们可以使用它来以不同于没有视频的页面样式化带有视频的页面?