我目前正在制作我的开发者。故事,这里是Stack Overflow。我添加了一些开源项目,并在说明中添加了一个链接。
当您点击bio中的链接时,我尝试使用该链接以新的tab
/ window
打开。我搜索并找到了三种方法:
[my link](https://myawesome.link)[newtab]
[my link](https://myawesome.link){:target="_blank"}
<a href="https://myawesome.link" target="_blank">my link</a>
我尝试了三种方式但没有任何效果。
所以我的问题是,有可能这样做吗?
如果有可能我该怎么做?
答案 0 :(得分:3)
当创建Markdown时,XHTML是新的热点,XHTML不允许在元素中使用target
属性。因此,Markdown没有得到target
的内置支持(可能还有其他因素导致该设计决定)。
[my link](https://myawesome.link)[newtab]
有人试图克服这一限制。我不知道采用此提案的任何Markdown实施。如果有,那将是非标准的,不可携带。
属性列表([my link](https://myawesome.link){:target="_blank"}
)也是非标准的,据我所知,只有每一个都采用了许多Markdown实现中的三个。即便如此,它们通常默认关闭。您需要查阅正在使用的实施文档以查看是否支持该实施,如果是,请参阅如何启用此功能。
当然,Markdown中始终可以接受原始HTML(<a href="https://myawesome.link" target="_blank">my link</a>
)。但正如您在答案中所解释的那样:
然后,无论如何,他们都会通过HTML白名单过滤器运行整个输出,因为即使只有Markdown文档也可以轻松包含XSS攻击。
我希望StackExchange(包括StackOverflow)以及许多其他网站都是如此。为了更好地理解为什么人们不喜欢target
(以及可能为什么它在XHTML中无效),请阅读以下问题的答案:Is it alright to use target=“_blank” in HTML5?
简而言之,似乎由于XHTML使其无效,因此支持不如HTML4时代那么普遍。确实,HTML5规范将它带回来,但它似乎没有像以前那样得到同样广泛的支持。
最好的答案是使用原始HTML,如果它不起作用(你正在使用的服务剥离它)接受它是不可能的。