你好,
最近,我论坛上的所有外部链接都无法在新标签页中打开。我已双重检查了“默认在新标签页中打开外部链接”选项,确认已勾选:
我通过检查元素查看了链接背后的 HTML 代码,发现 target="_blank" 明显缺失。
我该怎么办?
您试过在安全模式下运行吗?也许是一个新主题、主题组件或插件造成了干扰?![]()
我尝试在安全模式下运行该网站,但问题依旧。
您运行的是哪个版本的 Discourse?这样我更容易确认是否能复现问题。
我正在运行最新的 2.7.0.beta1 版本。
你可以在 Meta 上测试一下。在这里设置你的偏好,让外部链接在新标签页中打开,看看是否对你有效。对我来说效果相当不错。
你好 @riteshsaini
排查问题的最佳第一步之一,是直接使用网页开发控制台检查 DOM 结构,并查看你链接的具体属性,尤其是“target”属性。
通常,你无法通过直接阅读源代码看到这些 DOM 属性(这些属性可能存在于 DOM 中,但不存在于源代码中),因此你需要查询 DOM 以获取这些属性(以确保 100% 准确)。
希望这能帮到你。
我相信他在这里就是这样做的
不。阅读源代码并不等同于检查 DOM。
DOM 属性可能与源代码不同(而且通常确实不同),尤其是在那些大量使用 JavaScript 操作 DOM 的网站(如 Discourse)上。
这就是我特意提到要查询 DOM,而不仅仅是查看源代码的原因 ![]()
不过,我同意你的看法,@osioke,源代码确实清楚地显示缺少 target 属性;但当我们检查 DOM 时,我们就能“确定”该属性的实际状态,因为 DOM 的状态可能与源代码不同(而且通常确实不同)。
就我个人而言,我非常推崇“绝不假设任何事”的原则,因此我建议 @riteshsaini 通过检查 DOM 来“确认”,然后再“据此进行下一步”。
DOM 和源代码中的链接 target 属性很可能处于相同的状态;但我始终建议大家在排查问题时不要假设这类细节,因此我提出将查询 DOM 作为一个故障排查步骤。
希望这能帮到你。
与其在设置中调整,我更倾向于使用这种方法:
演示:https://theme-creator.discourse.org/theme/Bcat/auto_link_new_tab
<script type="text/discourse-plugin" version="0.8">
api.onPageChange((url, title) => {
// 自动在新标签页或窗口中打开外部链接
var pc = 1;
if ($("html").hasClass("mobile-device")) pc = 0;
var links = document.links;
for (var i = 0, linksLength = links.length; i < linksLength; i++) {
if (links[i].hostname != window.location.hostname) {
if (pc) links[i].target = '_blank'; else links[i].target = '_self';
}
}
});
</script>
……并完美地通过一个扎实的 Discourse API 示例进行了说明,展示了 DOM 和源代码将处于不同的状态,因此您将无法在由上述 JavaScript 设置的 HTML 源代码中看到目标属性 ![]()
@Bcat 感谢分享这段代码。但我应该把它加在哪里呢?
附:抱歉问这个愚蠢的问题。我不是程序员,对 Discourse 也完全是新手 ![]()
嘿 @neounix,谢谢你的回复。
我不太确定该怎么做
如果你有空的话,请给我指点一下。
之前该选项未勾选,所以我把它勾选上了。现在只有在我登录时,链接才会在新标签页中打开。如果我在无痕模式下检查该网站,它仍然无法正常工作。
它运行得完美无缺!非常感谢 ![]()
有没有什么方法可以给所有外部链接添加 rel="nofollow",包括管理员添加的那些?
我已经为此挣扎了好几个月了。
对于用于分享和下载(通过 bitly 链接或安全性较低的网站)的论坛,您是否考虑使用 rel="noopener noreferrer" 来替代 rel="nofollow"?
您可以了解更多关于 noopener noreferrer 的信息。
我可以考虑添加 noopener noreferrer,但我仍然需要同时添加 nofollow。问题是,我不希望 Google 抓取或索引这些链接,因为它们是联盟链接。只有 nofollow 能解决这个问题。
添加 links[i].rel = 'nofollow'; 或下载文件:discourse-automatically-open-external-links-in-new-tab.zip|附件 (856 字节)