啊,我现在明白了。我原本以为 embedMaxHeight 的目的是以更原生的样式渲染评论,尽可能减少滚动(除非是长篇线程,那仍然需要滚动)。所以我将其设置为 15000 像素。我会适当调低这个值。
那样的话,我认为 embedMinHeight 可能没有按预期工作。即使将其设置为 400 像素,嵌入内容的高度仍然至少有 600 像素,末尾还留有一个小间隙。
啊,我现在明白了。我原本以为 embedMaxHeight 的目的是以更原生的样式渲染评论,尽可能减少滚动(除非是长篇线程,那仍然需要滚动)。所以我将其设置为 15000 像素。我会适当调低这个值。
那样的话,我认为 embedMinHeight 可能没有按预期工作。即使将其设置为 400 像素,嵌入内容的高度仍然至少有 600 像素,末尾还留有一个小间隙。
重新设计的评论表单要出色得多,尤其是在移动端体验上!
没错!@keegan 在开发时将其作为核心用例之一,很高兴你喜欢。不过我们才刚刚在几个小时前合并了它,因此仍在处理后续问题,比如工具栏宽度断裂和按回车键发送的行为。
我在想,是否也值得直接在帖子(Discourse)中显示这个表单。对于非技术用户来说,表单直接展开通常更具吸引力且更友好。或许可以测试一下,看看是否能提升参与度?
在这种情况下,我认为
embedMinHeight可能未按预期工作。即使将其设置为 400px,嵌入内容的最小高度仍至少为 600px,末尾还留有一小段空白。
这确实是一个 bug,已在以下链接中修复:
main ← fix-embed-iframe-shrink
**Previously**, the fullApp embed measured `document.body.scrollHeight` to repor…
表单宽度超过了显示区域,导致出现非预期的横向滚动;
此问题现已修复,请更新!
不过,我发现了两个小问题
我注意到您的网站上还有另一个问题。我看到您将博客的深色/浅色模式系统与新的 Discourse 嵌入功能进行了集成,因此更改博客模式会自动切换嵌入内容的模式。然而,虽然该集成在 Firefox 和 Chrome 中运行正常,但在 Safari 中却无法工作。我猜这是 Discourse 的问题,因为不仅“允许访问”弹窗仅与 Safari 相关,而且滚动条显示异常的问题也仅出现在 Safari 中。
暂且撇开上述问题不谈,我很好奇您是如何实现深色/浅色模式集成的。几年前,我发起了一篇题为《自动为嵌入评论应用深色模式》的帖子,并据此请人编写了一个使用 postMessage 的脚本,使两个系统能够协同工作。但随着 Discourse 推出全新的评论系统嵌入功能,该脚本似乎已失效(默认情况下意外地采用了 Discourse 主题的深色模式)。所以我想问:您之前是否编写过 postMessage 脚本,并针对 Discourse 的新嵌入系统进行了更新?如果是的话(尽管您使用 WordPress,而我使用 Ghost),您是否介意分享您的代码?或许我可以将您的代码与我现有的代码进行对比,尝试让 Ghost 和博客的深色模式设置也能正常工作。
暂且不论这些,我很好奇你是如何实现深色模式/浅色模式集成的。
如果你的博客和 Discourse 都使用跟随系统的自动深色模式,它们将保持同步。
我们在 Discourse 中添加了自动深色模式,详情参见:Automatic Dark Mode color scheme switching
如果您的博客和 Discourse 都使用跟随系统的自动深色模式,它们将保持同步。
我们在 自动深色模式配色方案切换 中为 Discourse 添加了自动深色模式功能。
是的,但据我理解并回忆,这使 Discourse 能够检测操作系统是否启用了深色模式,并据此自行调整。我发起的帖子(是对您链接帖子的回复,而该帖子也链接到了它)讨论的是博客中手动切换浅色和深色模式的开关/按钮(无论操作系统的模式如何)。这听起来对吗(从而使我之前的问题依然相关)?
明确一下,这是我请人编写的用于我博客的脚本,我想现在需要进行一些调整(也许只需要更改几个类,我不确定)。
<style>:root.dark{background: #1D2224}</style>
<script>
const discourseUrl = 'https://ff2f.discourse.group';
const clearDarkModeThrottle = () => window.darkThrottled = false;
window.isDark = false;
window.discourseLoaded = false;
window.setDarkMode = state => {
window.isDark = state;
window.darkThrottled = true;
localStorage.setItem('darkmode-enabled', state);
Array.from(document.getElementsByClassName('dm-input')).forEach(element => element.checked = state);
document.documentElement.classList[state ? 'add' : 'remove']('dark');
setTimeout(clearDarkModeThrottle, 250);
window.discourseLoaded && setIframeStyle();
};
let sub = () => {};
if (localStorage.getItem('darkmode-enabled') === "true") {
document.documentElement.classList.add('dark');
// 在 domContentLoaded 后更新元素
sub = () => window.setDarkMode(true);
}
document.addEventListener('DOMContentLoaded', () => {
Array.from(document.getElementsByClassName('darkmode-toggle'))
.forEach(element => element.onchange = darkmodeToggled);
function darkmodeToggled() {
const input = this.querySelector('input');
window.darkThrottled ? (input.checked = !input.checked) : window.setDarkMode(input.checked);
}
sub();
sub = null;
});
const handleMessageListener = (event) => {
var origin = event.origin;
if (origin === discourseUrl) {
setIframeStyle();
window.discourseLoaded = true;
}
};
const setIframeStyle = () => {
const iframe = document.getElementById("discourse-embed-frame");
if (iframe && iframe.contentWindow) {
iframe.contentWindow.postMessage(
window.isDark ? "dark" : "light",
discourseUrl
);
}
};
window.addEventListener("message", handleMessageListener);
</script>
Thiago_Mobilon:
表单宽度超过了显示区域,导致出现不必要的横向滚动;
这个问题现已修复,请更新!
我刚刚将 Discourse 更新到最新版本,但发现了两个问题:
您介意分享一下您的代码吗?
当然可以,
这是我在 Discourse 中使用的 CSS:
header a.button {
color: #fff;
padding: 6px 8px;
background-color: var(--tertiary);
display: inline-block;
}
.username a.staff {
padding: 2px 5px;
border-radius: 4px;
color: var(--tertiary-hover);
// text-shadow: 0px 0px 14px var(--tertiary-400);
background-color: var(--tertiary-400);
}
@media (prefers-color-scheme: light) {
/* Iframe 主背景 */
html, body {
font-family: 'Inter', sans-serif;
}
}
@media (prefers-color-scheme: dark) {
/* Iframe 主背景 */
html, body {
background-color: #1e2021 !important; /* 您的 --bg */
color: #f7f7f7 !important; /* 您的 --body-color */
font-family: 'Inter', sans-serif;
}
header.discourse {
border-bottom: 3px solid rgb(50.82, 50.82, 50.82);
}
article.post {
border-bottom: 1px solid rgb(50.82, 50.82, 50.82);
}
/* 主文本颜色 */
.embedded-posts,
.embedded-posts p,
.embedded-posts h1,
.embedded-posts h2,
.embedded-posts h3 {
color: #f7f7f7 !important;
}
/* 区块背景,如嵌入页脚(回复选项) */
.embedded-footer {
background: #27292b !important; /* 您的 --bg-2 */
border-top: 1px solid #27292b !important;
}
/* 边框颜色(避免浅色边框出现) */
.embedded-posts, .embedded-footer {
border-color: #27292b !important;
}
/* 确保链接/按钮颜色正确 */
// a:link, a:visited, .topic-post .post-action-list button {
// color: #35bcf1 !important; /* 您的 --link-color */
// }
}
Thiago_Mobilon:
2. 分析数据混乱
目前,嵌入内容正在触发 Google Analytics 和 GTM 脚本。这导致我们的页面浏览量翻倍(帖子一次,iframe 一次),从而扰乱了我们的数据。理想情况下,系统应能检测到它位于 iframe 中,并自动停止所有跟踪脚本(包括 Discourse 的分析脚本)。
已选择为这些内容添加标签
在这种情况下,我认为正确的做法是触发监控事件,而不要加载整个标签。当前的设置扭曲了我们的分析数据,因为它触发了 page_view 事件,人为地夸大了所有站点统计数字。
一夜之间,我们的页面浏览量飙升,但这些数字是人为的——从商业角度来看毫无意义。
更不用说,我们目前还在重复加载和处理脚本。
就**GTM(Google Tag Manager)**而言,情况甚至更糟:账户中的其他所有脚本都被注入了两次,包括 Google 和 Meta 广告像素、第三方广告网络脚本等。
关于 Discourse 原生分析功能,我建议再做一项调整:将嵌入流量单独归类。这样我们就可以分别查看社区流量和嵌入流量。
非常感谢,我很感激。不过,这让我有点困惑。当我试图让使用 Ghost 的博客上的深色模式切换与 Discourse 嵌入协同工作时(默认情况下它无法工作),我最终被告知需要实现一些使用 postMessage 的代码(我请人编写了这段代码,并且确实奏效了)。但是您提供的代码中没有任何 JavaScript,这对我来说说不通,我也不明白为什么在 WordPress 环境下它就能开箱即用。无论如何,还是要感谢您的帮助。
我刚将 Discourse 更新到最新版本,但发现了两个问题:
- 文本框已损坏——输入时没有任何显示。
- 如果将模式切换为 Markdown,则能正常工作。
- 嵌入内容在 Safari/iOS 上仍显示水平滚动条;
大家好,想确认一下是否有人已经查看过这个问题?
我的用户反馈,由于文本框的问题,他们完全无法使用表单,这已成为我们社区的一个阻碍。
LucasMiller:文章下方的评论界面存在 bug;我无法输入任何内容来发布(已在 iPhone 和 Android/Xiaomi 上测试)。点击文本框准备输入,但系统完全不响应任何输入。请在方便时查看一下!
这个问题仅出现在会是第一条评论的文章中。
LucasMiller:我唯一能发布评论的方法是创建一个不带任何文本的引用。只有在被重定向到社区界面(而不是停留在文章下方)后,我才能实际添加我的评论。
Markdown 的变通方法有所帮助,但对普通用户来说并不理想。任何见解或临时解决方案都将不胜感激!再次感谢大家的帮助。
cc @Falco
在 GTM(Google Tag Manager) 的情况下,问题更为严重:账户中的其他每个脚本都被注入了两次,包括 Google 和 Meta Ads 像素、第三方广告网络脚本等。
main ← xfalcox:fix-embed-third-party-analytics
**Previously**, loading Discourse inside a full app embed iframe caused the host…
关于 Discourse 原生分析功能,我建议再做一项调整:将嵌入流量单独划分为一个类别。这样我们就可以分别查看社区流量和嵌入流量。
main ← xfalcox:segment-embed-traffic-analytics
**Previously**, pageviews served inside the full app embed iframe (`?embed_mode=…
Thiago_Mobilon:
我刚刚将 Discourse 更新到了最新版本,但发现了两个问题:
- 文本框已损坏——输入时没有任何内容显示
- 如果我将模式切换为 Markdown,则功能正常。
- 在 Safari/iOS 上,嵌入内容仍然显示水平滚动条;
大家好,只是想确认一下是否有人已经查看了这个问题?
我的用户报告说,由于文本框的问题,他们完全无法使用该表单,这已成为我们社区的一个阻碍。
LucasMiller:文章下方的评论界面存在一个 bug;我无法输入任何内容来发布(已在 iPhone 和 Android/Xiaomi 上测试)。点击文本框准备输入时,系统完全不响应任何输入。请在方便时查看一下!
这个问题仅出现在需要发布第一条评论的文章中。
LucasMiller:我唯一能发布的方法是创建一个不带任何文本的引用。只有在将我重定向到社区界面(而不是停留在文章下方)后,我才得以真正添加我的评论。
Markdown 的变通方法有所帮助,但对普通用户来说并不理想。任何见解或临时解决方案都将不胜感激!再次感谢大家的帮助。
cc @Falco
这应该能解决问题,预计今天晚些时候上线
main ← fix/docked-composer-redundant-input-listener
**Previously**, `DockedComposer` attached a redundant native `input` listener th…
感谢 @renato
Thiago_Mobilon:
横向滚动条在移动设备上仍然显示,方便时请查看一下
我在手机上无法复现该问题
对我来说,所有文章都出现了这个问题。也许是仅限 iOS 的问题?以下是 Safari 和 Chrome 的截图。