# 编辑器中的“插入链接”弹窗应允许 target=blank

**URL:** <https://meta.discourse.org/t/insert-link-popup-in-editor-should-allow-target-blank/133555>\
**Category:** Feature\
**Created:** [2019年十一月16日 11:26 UTC](https://meta.discourse.org/t/insert-link-popup-in-editor-should-allow-target-blank/133555 "2019-11-16T11:26:43Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![rogerco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rogerco/32/161338_2.png) [@rogerco](https://meta.discourse.org/u/rogerco)\
**Post date:** [2019年十一月16日 11:26 UTC](https://meta.discourse.org/t/insert-link-popup-in-editor-should-allow-target-blank/133555/1 "2019-11-16T11:26:43Z")

</div>

编辑器中的链接按钮不允许您指定链接的目标，因此通过它输入的所有链接都必须在同一标签页/窗口中打开。[就像这样](https://ecosia.org)

如果您输入 HTML 链接，可以指定 target=“\_blank”，这样它就能正确在新窗口/标签页中打开，如下所示：  
[在新标签页中打开](https://ecosia.org)

在链接弹窗中添加一个“在新标签页/窗口中打开”的复选框会很有用。

---

<div class="post-metadata">

**Author:** ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)\
**Post date:** [2019年十一月16日 13:29 UTC](https://meta.discourse.org/t/insert-link-popup-in-editor-should-allow-target-blank/133555/2 "2019-11-16T13:29:06Z")

</div>

不，因为这已经是每个用户的偏好设置了。

---

<div class="post-metadata">

**Author:** ![rogerco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rogerco/32/161338_2.png) [@rogerco](https://meta.discourse.org/u/rogerco)\
**Post date:** [2019年十一月16日 13:41 UTC](https://meta.discourse.org/t/insert-link-popup-in-editor-should-allow-target-blank/133555/3 "2019-11-16T13:41:49Z")

</div>

哪里？不在我的偏好设置里。  
还是说你的意思是，如果一个用户恰好相当精通，就会知道可以右键点击在新标签页中打开链接？这并不是重点。

---

<div class="post-metadata">

**Author:** ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)\
**Post date:** [2019年十一月16日 14:48 UTC](https://meta.discourse.org/t/insert-link-popup-in-editor-should-allow-target-blank/133555/4 "2019-11-16T14:48:53Z")

</div>

> [@rogerco](#):
>
> 不在我的偏好设置中。

不正确。

 ![image](https://global.discourse-cdn.com/meta/original/3X/3/8/38a56544e5ab83dfcecd0aca2a2d7fc86fe8cbde.png)

---

<div class="post-metadata">

**Author:** ![rogerco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rogerco/32/161338_2.png) [@rogerco](https://meta.discourse.org/u/rogerco)\
**Post date:** [2019年十一月16日 15:00 UTC](https://meta.discourse.org/t/insert-link-popup-in-editor-should-allow-target-blank/133555/5 "2019-11-16T15:00:25Z")

</div>

我道歉——我从未注意到可以点击左侧的“界面”来获取大量更多选项。（花了我一点时间才弄清楚你那张截图是从哪里来的）

但这只是一个适用于所有链接的全局选项。我想处理的情况是：当希望强制在新标签页中打开链接，以免将读者从你的 Discourse 站点带离（如果她尚未设置全局偏好），但在此情况下在新标签页中打开链接确实合理。

我假设，如果我不勾选全局偏好，那么发帖人应该能够根据情况自行指定是否在新标签页中打开。

这最常见于需要作为参考的外部链接。如果是内部链接（例如指向另一个主题），那么在新标签页中打开可能并不合适，读者可以自行选择全局设置或通过右键点击来实现。

如果用户选择全局设置，那当然没问题，但更细致的处理方式也同样有效。作为读者，我会参考发帖人的建议，以决定链接是否应该在新标签页中打开。

---

<div class="post-metadata">

**Author:** ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)\
**Post date:** [2019年十一月16日 15:01 UTC](https://meta.discourse.org/t/insert-link-popup-in-editor-should-allow-target-blank/133555/6 "2019-11-16T15:01:47Z")

</div>

不过，你这是在主张你的偏好比用户的偏好更重要。这是行不通的。链接会尊重用户偏好，但如果你是网站所有者，可以通过网站设置，按照你的意愿为所有新用户默认该偏好。

---

<div class="post-metadata">

**Author:** ![rogerco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rogerco/32/161338_2.png) [@rogerco](https://meta.discourse.org/u/rogerco)\
**Post date:** [2019年十一月16日 15:05 UTC](https://meta.discourse.org/t/insert-link-popup-in-editor-should-allow-target-blank/133555/7 "2019-11-16T15:05:56Z")

</div>

没那么严厉。我只是想说，在某些情况下，这样做可能是合适的，并且在对话框中提供该选项是明智的（正如许多其他系统所做的那样）。您不必使用它，而且如果用户尚未设置全局偏好，它仅会单向覆盖该偏好。

在 HTML 规范中，允许在 标签中指定 target 属性，我看不到有正当理由限制这一选项。您能说明这样限制的理由吗？

---

<div class="post-metadata">

**Author:** ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)\
**Post date:** [2019年十一月16日 21:04 UTC](https://meta.discourse.org/t/insert-link-popup-in-editor-should-allow-target-blank/133555/8 "2019-11-16T21:04:08Z")

</div>

> [@rogerco](#):
>
> 你能证明这样限制是合理的吗？

我刚刚在你上面的帖子中已经证明了。

---

<div class="post-metadata">

**Author:** ![rogerco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rogerco/32/161338_2.png) [@rogerco](https://meta.discourse.org/u/rogerco)\
**Post date:** [2019年十一月17日 23:18 UTC](https://meta.discourse.org/t/insert-link-popup-in-editor-should-allow-target-blank/133555/9 "2019-11-17T23:18:35Z")

</div>

> [@codinghorror](#):
>
> 我刚刚就在你上面的那篇帖子中做了。

真的吗？你主张读者比作者更清楚作者的意图。这对作者是不尊重的，因为作者可能有非常合理的理由希望链接在新标签页/窗口中打开——例如，如果目标是实用的参考资料，作者可能希望读者在阅读当前页面时仍能访问；或者作者知道该链接指向的网站禁用了“后退”按钮，如果读者想返回，将无法返回（仅举两个例子，其实有很多非常充分的理由支持链接在新标签页中打开）。  
此外，你的评论暗示了一个假设，即所有读者都精通技术，知道在适当时如何在新标签页中打开链接，而在技术圈之外，这与事实相去甚远。

作为读者，我感谢那些恰当地利用 HTML 可用功能来引导用户体验的作者。作为作者，我希望在适当的时候能够预先设定用户体验。

为网站提供一项偏好设置（仅限登录访客），使所有外部链接都在新标签页中打开，这似乎既反常（近乎非标准），又过于粗暴。有时，从读者或作者的角度（或两者）来看，在新标签页中打开外部链接并不合适。有时，在新标签页中打开内部站点链接才是合适的（例如，指向术语表的链接，可以在继续阅读时保持打开状态）。

坦率地说，你的评论在我看来既好为人师又专断。你似乎在暗示，用户要么必须将所有外部链接都设为在新标签页中打开，要么必须在对链接网站的内容或行为一无所知的情况下，对每个案例做出判断，并且作者不应有权通过替读者做出选择来引导读者。

这并不能成为不提供大多数编辑器中已有功能的理由。

也许你真正想表达的是，出于个人原因，你本人不想这样做——这完全可以理解。我想你并不是唯一的决策者，即使你是联合创始人（应该是 Discourse 吧——无论如何，我对此表示敬意和赞赏）。

---

<div class="post-metadata">

**Author:** ![Stephen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stephen/32/95011_2.png) [@Stephen](https://meta.discourse.org/u/Stephen)\
**Post date:** [2019年十一月17日 23:46 UTC](https://meta.discourse.org/t/insert-link-popup-in-editor-should-allow-target-blank/133555/10 "2019-11-17T23:46:58Z")

</div>

> [@rogerco](#):
>
> 你主张读者比作者更清楚作者的意图。

没错，既然这是一个用户可配置的选项，第三方就不应该有权忽略用户的偏好。如果某些链接的行为方式不一致，会造成多大的困惑呢？

> [@rogerco](#):
>
> 此外，你的评论暗示了一种假设，即所有读者都精通技术，知道在适当时如何在新标签页中打开链接，而事实远非如此，尤其是在技术圈之外。

实际上，这种行为恰恰有利于那些技术能力较弱的用户，因为他们不会在没有明确理由的情况下看到行为上的差异。对于具备技术能力的用户，系统提供了相应的偏好设置；而对于那些不理解细微差别的人来说，至少能保证行为的一致性。

> [@rogerco](#):
>
> 作为读者，我感激那些能够恰当地利用 HTML 可用功能来引导我用户体验的作者。作为作者，我希望在适当的时候能够预先设定用户体验。

上述措辞指的是内容管理系统（CMS），而 CMS 确实包含该功能。我并不认为有任何建议声称 Discourse 是一个 CMS，或者其存在是为了取代 CMS 的角色。请跟我重复：内容管理系统围绕_内容_构建，而讨论系统则围绕_用户_构建。

> [@rogerco](#):
>
> 让所有外部链接在新标签页中打开（仅限登录用户）的偏好设置选项，既显得不寻常（甚至接近非标准），又过于粗暴。有时从读者或作者（或双方）的角度来看，在新标签页中打开外部链接并不合适。有时在新标签页中打开内部站点链接才是合适的（例如，指向一个在阅读过程中可能需要保持打开的术语表链接）。

能否具体说明一下为什么这样做不合适？便利性是一个因素，但这就是“后退”按钮存在的意义。用户偏好需要与某种东西关联，要么是用户账户，要么是 Cookie。在用户账户级别存储用户偏好再次为用户提供了最一致的体验。社区的核心在于鼓励注册和参与——鼓励用户注册以便设置此类偏好，对社区是有益的。

> [@rogerco](#):
>
> 坦率地说，你的评论在我看来既带有说教意味，又显得独断专行。你似乎在暗示，用户要么必须将所有外部链接都在新标签页中打开，要么必须在对链接站点的内容或行为一无所知的情况下，对每种情况做出判断；同时，作者不应有权通过替读者做出选择来引导读者。
> 
> 这并不能成为不提供大多数编辑器中可用功能的理由。

再次强调，你指的是内容管理系统，而不是讨论平台。对于前者，作者在决定行为时拥有已知的上下文，因为此类平台的目标通常是内容消费。而像 Discourse 这样的讨论平台则完全不同——赋予用户覆盖他人偏好的能力，在逻辑上完全说不通。

---

<div class="post-metadata">

**Author:** ![rogerco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rogerco/32/161338_2.png) [@rogerco](https://meta.discourse.org/u/rogerco)\
**Post date:** [2019年十一月18日 00:18 UTC](https://meta.discourse.org/t/insert-link-popup-in-editor-should-allow-target-blank/133555/11 "2019-11-18T00:18:22Z")

</div>

谢谢你尝试，@Stephen。  
恐怕我还是不太理解。我怀疑我们这里存在一种跨大西洋的文化差异。你们所说的对我来说完全讲不通。

让我再尝试最后一次解释。  
想象一个现实生活中的讨论论坛。它就像一个会议室，大家轮流发言，并认真倾听发言者的内容。现在，发言者可能想引用某篇期刊论文。在你的模式中，听众有权说“稍等一下，我去图书馆读那篇论文”，然后便离开。而在我的模式中，发言者有权说“这是图书馆的目录编号，会议结束后你去查一下”。  
或者，假设发言者正在解释一些高度技术性的内容，可能需要听众查阅术语表来理解。在你的模式中，用户有权让发言者暂停，并在每次使用新术语时朗读定义。而在我的模式中，发言者会分发印有术语表的纸张，听众根据需要随时查阅。

实际上，在 Discourse 中，由于存在用户偏好“始终在新标签页中打开外部链接”的设置，带有 target 属性的链接无法覆盖这一主动偏好。它只能覆盖“不自动在新标签页中打开外部链接”这一被动偏好，而且仅当作者自身也有相关偏好时才会生效。

无论如何，我们显然无法达成一致。我认为这是一种文化差异。我本可以着手学习另一种（对我来说）生僻的语言，并分叉代码来实现我想要的功能，但说实话，我懒得这么做。这也不是什么大事，只是有点烦人：当我想发送一个链接到新标签页以方便用户时，不得不输入原始 HTML（是的，有时“大老板”确实知道什么最好：wink:）。

---

<div class="post-metadata">

**Author:** ![Stephen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stephen/32/95011_2.png) [@Stephen](https://meta.discourse.org/u/Stephen)\
**Post date:** [2019年十一月18日 00:34 UTC](https://meta.discourse.org/t/insert-link-popup-in-editor-should-allow-target-blank/133555/12 "2019-11-18T00:34:54Z")

</div>

> [@rogerco](#):
>
> 跨大西洋的文化差异

除非你居住在一个既不属于欧洲（英国）也不属于美国的跨大西洋目的地。

我在伦敦郊外从事大型多租户系统的开发已近二十年，我相信杰夫在美国从事类似工作已有更长的时间。

这并非文化差异，而是不同平台重视的方面不同。用户处于讨论平台的中心，就个人而言，在 Discourse 等产品中，用户的偏好至关重要。

---

<div class="post-metadata">

**Author:** ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)\
**Post date:** [2019年十一月18日 02:21 UTC](https://meta.discourse.org/t/insert-link-popup-in-editor-should-allow-target-blank/133555/13 "2019-11-18T02:21:36Z")

</div>

如果您是网站所有者，并且希望默认开启“在新标签页中打开”选项，您可以在网站设置中进行修改。

如果您不是网站所有者，那么请像其他人一样尊重用户对此的偏好设置。

---

<div class="post-metadata">

**Author:** ![audiotraxxx](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/audiotraxxx/32/196115_2.png) [@audiotraxxx](https://meta.discourse.org/u/audiotraxxx)\
**Post date:** [2020年十月5日 10:36 UTC](https://meta.discourse.org/t/insert-link-popup-in-editor-should-allow-target-blank/133555/14 "2020-10-05T10:36:57Z")

</div>

> [@rogerco](#):
>
> 编辑器的“链接”按钮不允许您指定链接的目标，因此通过该按钮输入的所有链接都必须在同一标签页/窗口中打开。[像这样](https://ecosia.org)
> 
> 如果您输入 HTML 链接，可以指定 `target="_blank"`，这样链接就会正确地在新的窗口/标签页中打开，如下所示：  
> [在新标签页中打开](https://ecosia.org)
> 
> 如果在链接弹窗中添加一个“在新标签页/窗口中打开”的复选框，将会非常有用。

我也需要这个功能，并且理解 @rogerco 的意思……顺便说一下，我是自己论坛的管理员。

有时，当有人发布指向外部 URL 的链接时，我需要确保会员留在论坛内。让编辑器允许选择 `target="_blank"` 就是解决方案，这样我作为管理员就可以选择哪些链接在同一标签页中打开，哪些链接可以在不同的标签页中打开。

我作为管理员，并不需要所有链接都这样行为（在新标签页中打开），我只需要某些链接（由我选择）这样处理。
