Markdown 文档中的书签链接

Posted

技术标签:

【中文标题】Markdown 文档中的书签链接【英文标题】:Bookmarklet link in Markdown document 【发布时间】:2010-09-17 05:16:20 【问题描述】:

如何在 Markdown 解析文档中包含书签? Markdown 是否有任何“标签”,基本上说“不要解析这个”??

例如,你可以有类似的东西:

<a href="javascript:function my_bookmarklet()
                alert('Hello World');
                my_bookmarklet();">Hello</a>

但是,如果我尝试将其中的 javascript 传递到 markdown 中的链接中,如下所示:

[Hello World!](javascript:function my_bookmarklet()alert('Hello World');my_bookmarklet();)

你得到一个乱七八糟的链接,如下所示。

[Hello World!](javascript:function my_bookmarklet()alert('Hello World');my_bookmarklet();)

这里面还有吗?

不,我不想在 SO 或任何东西中放入恶意书签,但我想为我的网站使用 markdown 并想发布一些我写的书签。

编辑:我以为我有答案……但现在看来我还没有答案。

这似乎在 WMD 和决战中效果很好,但在 Markdown.php 编辑器中却不行。任何人都有专门使用 Markdown.php 的经验吗?

【问题讨论】:

【参考方案1】:

Markdown 将保留任何 html,因此您只需输入

<a href="javascript:function my_bookmarklet()
                alert('Hello World');
                my_bookmarklet();">Hello</a>

然后打个招呼。 编辑:不再适用于 SO,这是一件好事

您还可以使用反斜杠转义特殊字符(在这种情况下,它会将您的 Javascript 中的“)”视为 URL 的结尾)并且链接语法将起作用:

[Hello](javascript:function my_bookmarklet(\)alert('Hello World'\);my_bookmarklet(\);)

给出 [Hello](javascript:function my_bookmarklet()alert('Hello World');my_bookmarklet();)

【讨论】:

Markdown 的默认行为是单独保留内联 HTML,因此如果您在自己的网站上使用 Markdown,这些示例应该可以工作。但是,任何显示用户提交内容的站点都应该限制它允许通过的 HTML 以防止 XSS。从alert('Hello World') 示例到劫持其他人的 SO 帐户只是一小步。回想起来,我很惊讶这些例子最初在我的答案中起作用。他们真的不应该,也不要再这样做了。【参考方案2】:
[Hello World!][1]
[1]:javascript:alert('Hello World')

【讨论】:

是的!这就是你的做法!在使用下一行的链接格式化时也可以使用(例如,prettier 可能会因为链接过长而起作用。这也适用于由于某种原因 &lt;a&gt; 标记不起作用的 MDX 文档。【参考方案3】:

我知道这是一个非常古老的问题,但是(以防其他人像我一样在这里找到他们的方式),如果您对脚本进行 url 编码,它将起作用。

例如:

    [Hello World](javascript:%28function%28%29%7Balert%28%22Hello%20World%22%29%7D%29%28%29%3B)

当然,如上所述,它在 SO 上不起作用。

注意:一些 url-encoders 会将空格(“”)替换为“+”,这对常规 url 有效,但不适用于 js 代码,空格应替换为“%20”

编辑:这似乎并不普遍。我想特定的降价解析器会在这里进行最终调用。但这在更多使用降价的地方对我有用。

【讨论】:

以上是关于Markdown 文档中的书签链接的主要内容,如果未能解决你的问题,请参考以下文章

markdown 修改Ubuntu的文件管理器左边栏的书签

markdown写confluence文档

自动生成Markdown格式文档图片链接

markdown 链接

markdown锚点

C#解析Markdown文档,实现替换图片链接操作