J'ai une page censée afficher une version plus grande d'une image lorsqu'elle a plané sur une vignette.
J'ai un "div 'avec un identifiant et le code jQuery est comme suit: p> Les images que j'utilise sont générées par un script rubis qui" génère " une image avec un identifiant similaire, mais différent. Cependant, parfois, les photos sont téléchargées qui ont des "espaces" à l'intérieur. Mes outils de développeur me disent que l'image de fond n'est pas réglée correctement, mais le chemin d'image est correct et le navigateur n'a pas de problèmes de trouver l'image. P> Ma question est, puis-je assainir l'URL 'SRC', alors les espaces ne seront pas un problème? Je suis au courant de faire ce serveur, mais j'aimerais savoir comment faire cela avec jQuery / JS aussi. P> Merci! P> P>
5 Réponses :
Utilisez JavaScript par exemple par exemple p> Je pense que vous pouvez Utilisez également la fonction JavaScript ' Encode CODE> fonction pour encoder votre "code> src code>"
Escape code>' aussi bien p>
Encode code> est obsolète, en raison de son manque de support Unicode.
Encoduri CODE> et
Encodéturicomponent code> sont des remplacements recommandés.
Il n'y a pas de tel que codé code>.
Escape code> existe mais est la mauvaise chose.
@bobince: facepalm i> J'ai totalement manqué cela et confus les deux. Escape CODE> a été modifié par la suite. Quelqu'un a mis la bouilloire! I>
@Shyam: En bref, n'utilisez pas Escape code>.
Ajout de citations autour de l'URL devrait aider: Cependant, selon le Spécifications W3C , espace blanc doit être échappée, de sorte que la solution d'encodage de l'URL fournie par
Cela ne voudrait que si la variable contenait des crochets. La question indique que les espaces sont le problème.
+1 - J'allais ajouter cette suggestion à Ma réponse jusqu'à ce que je voyais que tu l'aurais posté.
@David - Stackoverflow.com/questions/2168855/css-url-whats-better Veuillez lire La spécification avant le votant en bas, vous êtes incorrect: w3.org /Tr/css2/syndata.html#value-def-uri
Et après piquer aux cas de test, mon vote est verrouillé et je ne peux pas l'enlever. Comme c'est ennuyeux. C'est un bit assez étrange de la spécification qui aboutit à des uris brisées de manière illogique, mais il s'avère que c'est juste. Va montrer qu'il y a toujours quelque chose de nouveau à apprendre. Bien sûr, la solution «droite» reste à réparer l'URI.
@David j'ai édité ma question. Je suis cependant d'accord que l'URI a finalement besoin d'être codé, comme l'indique Andy E et Bobince.
1. Parce qu'ils ont une grande base de données effrayante avec FilePaths. Appelons cela une question de migration. 2. Je vais toujours développer l'application de remplacement. 3. Je suis un n00b, que puis-je ajouter d'autre?)
cool, quel site s'agit-il? Je téléchargerai un fichier avec un nom mal formé et d'injecter JavaScript dans votre page et de voler les connexions de vos utilisateurs, de faire une session et de détourner un compte, détruisez certaines données et entraînez-vous sinon la douleur et les dépenses épiques de votre entreprise. courtiser!
Vous pouvez faire un point sans être sarcastique. Mes excuses que je ne suis pas née avec un manuel de sécurité de 500 lbs. Notez également la dernière phrase de ma question. Je vous remercie d'avoir souligné la question de la sécurité, je suis un peu moins reconnaissant pour la réponse hostile.
Toutes mes excuses que je ne l'entends pas de manière hostile, j'étais jovial;)
Pas de problème, je le demande aussi parce que j'aime JQuery, mais j'aime minimiser la quantité de «plugins» qui prennent soin de ces questions. De plus, je pense que c'est une bonne pratique d'apprendre à assainir avec JavaScript. Dans la langue rubis, il est normal de considérer les données à contaminer qui proviennent d'une source externe.
Les espaces ne sont pas valables dans une URI. Ils doivent être codés vers vous pouvez Cependant, le problème réel Comme le dit Pekka, vous devez également utiliser des citations autour de l'URL dans l'URL % 20 Code>. P>
src.replace (/ / g, '% 20') code> ou plus généralement,
encodeuri (src) code> à
% code> -code tous les caractères qui ne sont pas valables dans une URI.
Encodéturicomponent (SRC) code> est plus courant, mais cela ne fonctionnerait que si le
src code> n'était qu'un seul nom de fichier relatif; Sinon, il est codé
/ code> et arrêter les chemins de travail. P>
img src code> est déjà cassé et ne fonctionne que grâce aux fixations de navigateur Correction de votre erreur. Vous devez corriger le script Ruby générant la page. Vous devriez être l'URL-encoder le nom de fichier avant de l'inclure sur le chemin; Il y a beaucoup plus de caractères pouvant vous causer des problèmes que de l'espace. P>
(...) code>. Bien que vous puissiez vous échapper sans eux pour de nombreuses URL, certains caractères devraient être
\ code> octeses. En utilisant des guillemets doubles signifie que vous pouvez éviter cela (aucune double guidage ne peut apparaître dans une URL elle-même). P>
Je sais que vous avez déjà sélectionné votre réponse, mais je souhaite améliorer la solution de Pekka et fournir la solution la plus réalisable parce que j'ai rencontré un autre problème alors qu'il gère un nom de fichier avec des crochets.
$("#viewlarge").css("background",'url(' + "'" + url+ "'" + ')');
Je n'autoriserais pas les images avec des espaces dans leurs noms de fichiers à télécharger - ne me semble pas bonne pratique.