2009-12-01 6 views
1

J'ai une page Web qui extrait plusieurs fichiers javascript dans la section HEAD. Le chemin d'accès à l'un de ces fichiers est généré dynamiquement, et je vois un problème avec certains chemins qui incluent le caractère #. Par exemple, le chemin suivant ne donc et résoudre correctement, le fichier .js ne se charge pas (même si je l'ai vérifié qu'il existe):# caractère dans le chemin de la référence javascript

<script src="\\remote_machine\share\test\this is #3 test\test.js"></script> 

Je me demande quelle est la signification spéciale de « # 3 'est dans cette situation. Je l'ai essayé de remplacer le caractère # avec l'entité HTML équivalente, comme ceci:

<script src="\\remote_machine\share\test\this is &#35;3 test\test.js"></script> 

mais cela ne résout pas le problème. De plus, je remarque que le chemin suivant ne résoudre correctement (en supposant que le fichier existe):

<script src="\\remote_machine\share\test\this is # test\test.js"></script> 

Quelqu'un pourrait-il expliquer la signification de « # 3 » dans le contexte du html comme décrit? Quelle est la solution recommandée?

EDIT: J'ai essayé de remplacer le '#' par "% 23" dans les trois exemples ci-dessus. Les deux premiers restent brisés, et le troisième ne fonctionne plus. Si je remplace en plus tous les espaces avec% 20, j'obtiens le même résultat.

Répondre

3

En dehors de la question avec le hachage et des espaces (qui devrait en effet être codé comme %23 et %20 respectivement), vous avez également antislashs . Les barres obliques inverses ne sont pas des séparateurs d'annuaire dans les URL. Une URL n'est pas la même chose qu'un nom de fichier, et ce que vous avez là n'est même pas un nom de fichier, c'est un chemin UNC, pour le réseau Windows local.

Il n'existe aucun moyen standard d'intégrer un chemin UNC dans une URL; La mise en réseau Windows n'a pas sa place sur le Web et vous ne devez pas inclure de références aux ressources sur un réseau Windows dans une page Web. Que js doit être sur un serveur Web approprié que vous pouvez référencer avec des URL HTTP normales.

Si vous doit essayer:

file://remote_machine/share/test/this%20is%20%23%20test/test.js  # works on IE, Chrome, Opera 
file://///remote_machine/share/test/this%20is%20%23%20test/test.js # works on IE, Firefox 

(. Ni les travaux sur Safari)

1

Vous devez utiliser encodage URL:

<script src="\\remote_machine\share\test\this%20is%20%23%20test\test.js"></script> 

Et essayez le file URI scheme:

<script src="file:////remote_machine/share/test/this%20is%20%23%20test/test.js"></script> 
+1

de 35% est un 5. Je pense que vous voulez dire 23% (0x23 == 35) –

+0

Quand je remplace mes # caractères avec% 23 dans les exemples ci-dessus, tous les trois sont brisés. Avant cela, seuls les deux premiers sont cassés. Si je remplace en plus tous les espaces avec% 20, j'obtiens le même résultat. – Odrade

1

Essayez de remplacer votre # avec %23. Et pendant que vous y êtes, je remplacerai vos espaces avec %20 ainsi

+0

fonctionne, mais ne fait pas. Le script Odrade

Questions connexes