javascript window.open () et le symbole #
-
04-07-2019 - |
Question
J'essaie de créer un lien vers un fichier contenant le caractère "#" via un appel window.open (). Le fichier existe et peut être lié à très bien en utilisant une balise d'ancrage normale.
J'ai essayé d'échapper au caractère '#' avec '% 23', mais lorsque le window.open (myurl) est traité, le '% 23' devient '% 2523'. Cela me dit que ma chaîne d'URL est en train d'être échappée par l'appel window.open en changeant le '%' en '% 25'.
Existe-t-il des moyens de contourner cet échappement supplémentaire?
Exemple de code:
<script language="javascript">
function escapePound(url)
{
// original attempt
newUrl = url.replace("#", "%23");
// first answer attempt - doesn't work
// newUrl = url.replace("#", "\\#");
return newUrl;
}
</script>
<a href="#top" onclick="url = '\\\\MyUNCPath\\PropertyRushRefi-Add#1-ABCDEF.RTF'; window.open(escapePound(url)); return true;">Some Doc</a>
L'URL qui crie dit " fichier: //MyUNCPath/PropertyRushRefi-Add%25231-ABCDEF.RTF" introuvable.
La solution
Vous recherchez la magie noire de encodeURI :
window.open("http://your-url.com/" + encodeURIComponent("foo#123.jpg"));
Autres conseils
Avez-vous essayé d'utiliser le caractère d'échappement du texte standard "\"?
\#
Avez-vous essayé de ne pas échapper à l'URL?
<a href="#top onclick="url = '\\\\MyUNCPath\\PropertyRushRefi-Add#1-ABCDEF.RTF'; window.open(url); return true;">Some Doc</a>