2008-10-14 6 views
13

Comment puis-je inclure un bookmarklet dans un document Markdown analysé? Y at-il un "tag" pour la démarque qui dit essentiellement "ne pas analyser cela" ??Lien Bookmarklet dans le document Markdown

Par exemple, vous pourriez avoir quelque chose comme:

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

Mais si j'essaie de passé le javascript de cela en un lien dans démarquage comme ceci:

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

Vous obtenez un lien foiré , comme ci-dessous.

[Bonjour tout le monde!] (Javascript: function my_bookmarklet() {alert ('Bonjour tout le monde');} my_bookmarklet();)

Y at-il de toute façon de contourner cela? Et non, je n'essaie pas de mettre des bookmarklets malicieux dans SO ou quoi que ce soit, mais je veux utiliser markdown pour mon site et je voudrais poster quelques bookmarklets que j'ai écrits. Edit: Je pensais avoir la réponse ... mais maintenant il semble que je ne l'ai pas tout à fait.

Cela semble fonctionner très bien dans WMD et showdown, mais dans l'éditeur Markdown.php, ce n'est pas le cas. Quelqu'un at-il de l'expérience avec Markdown.php spécifiquement?

Répondre

4

Markdown quitter tout seul HTML, donc vous pouvez simplement entrer

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

et obtenir Bonjour.Edit: ne fonctionne plus sur le SO, ce qui est une bonne chose

Vous pouvez également échapper à des caractères spéciaux avec une barre oblique inverse (dans ce cas, il est de voir le «) » s dans votre Javascript comme la fin de l'URL) et la syntaxe de lien fonctionnera:

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

donne [Bonjour] (javascript: function my_bookmarklet() {alert ('Bonjour tout le monde');} my_bookmarklet();)

+0

Cela ne ne semble pas fonctionner pour moi, au moins dans SO Chat. – nyuszika7h

+2

Le comportement par défaut de Markdown est de laisser le HTML en ligne seul, donc les exemples devraient fonctionner si vous utilisez Markdown sur votre propre site. Cependant, tout site affichant du contenu soumis par l'utilisateur devrait restreindre le code HTML qu'il autorise à se protéger contre XSS. C'est un petit pas de cet exemple 'alert ('Hello World')' pour détourner les comptes SO d'autres personnes. Avec le recul, je suis surpris que ces exemples aient fonctionné à l'origine dans ma réponse. Ils ne devraient vraiment pas, et ne plus. – stevemegson

5
[Hello World!][1] 
[1]:javascript:alert('Hello World')