Question

If you set the innerHTML of a <div> to innerHTML = '<a href="Something/C%23">C#</a><br />';

Ce qui semble réellement être rendu est:

<div>
<a href="Something/C#">C#</a><br />
</div> 

Quel est le bon moyen d'échapper à cela pour que le lien reste & "Quelque chose / C% 23 &"; ?

MISE À JOUR :
J'ai remarqué une petite chose étrange ici. Si vous utilisez une fonction pour construire le lien. Le supplément de 25% d'échappée n'est pas nécessaire. Bizarre.
ex.

function buildLink(tg, nm) {
  return '<a href="Something/' + tg + '">' + nm + '</a><br />';
}
Était-ce utile?

La solution

Essayez ceci:

<a href="Something/C%2523">C#</a><br />

Développez le " % " à " %25 " et vous obtenez ce que vous voulez. Ensuite, le & Quot; 23 & Quot; est reconverti en caractère de pourcentage et le <=> suivant n'est pas réinterprété.

Autres conseils

Il convient de noter que de nombreux navigateurs rendent un lien vers " Something/C%23 " comme " Something/C# " en tant que & "; sympathique &"; URL Vérifiez votre div utilisation de Firebug ou d'un outil similaire pour vous assurer qu'il n'est pas correctement configuré.

Si tel est le cas, vous devez échapper le signe de pourcentage en tant que %25:

innerHTML = '<a href="Something/C%2523">C#</a><br />';

Échappez au pour cent lui-même et vous devriez l'avoir.

innerHTML = '<a href="Something/C%2523">C#</a><br />';
  

Ce qui semble réellement être rendu est:

<a href="Something/C#">C#</a><br />

Non. Si vous survolez le lien, Firefox vous indiquera dans la barre d'état que le lien est dirigé vers & "C # &"; Mais il ment. En fait, cliquez sur le lien et vous vous retrouverez à & Quot; C% 23 & Quot; (il apparaîtra dans la barre d'adresse).

  

Quel est le bon moyen d'échapper à cela pour que le lien reste & "Quelque chose / C% 23 &"; ?

Vous avez eu raison la première fois. " quelque chose / C% 2523 " est trop codé.

  

J'ai remarqué une petite chose étrange ici. Si vous utilisez une fonction pour construire le lien. Le supplément de 25% d'échappement n'est pas nécessaire.

Être dans une fonction ou pas ne l'affectera pas. Ce qui l’affectera , et risque de vous dérouter ici, c’est si vous utilisez la barre d’adresses pour taper javascript: URLs comme mécanisme de test. javascript: les URL sont toujours des URL et leur codage% sera annulé une étape avant que l'interpréteur JS ne voie le code. Si vous utilisiez l'échappement littéral de chaîne JS, vous ne rencontriez pas ce problème:

javascript:alert(document.body.innerHTML='<a href="Something/C\x2523">C#</a>')
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top