【问题标题】:Bookmarklet link in Markdown documentMarkdown 文档中的书签链接
【发布时间】: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 的经验吗?

【问题讨论】:

    标签: markdown bookmarklet


    【解决方案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”

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多