Comment puis-je définir une page de base href Javascript?
Je veux mettre une page de base de l'attribut "href" Javascript basé sur l'hôte courant. J'ai généré des pages HTML qui peuvent être consultés sur les différents noms d'hôte, ce qui signifie que la génération d'une base de href de la balise va travailler dans un nom d'hôte, mais va être incorrecte dans l'autre.
- J'ai habituellement une des constantes de fichier JS que je comprend que je
$.serverRoot
à être le parent de la racine de l'hôte (par exemple,$.serverRoot = '/myapp/';
- Qui fonctionne pour des choses comme des requêtes AJAX, mais si je devais régler tous les chemins de l'image et lien hrefs de compte pour une variable Javascript que j'aurais du faire une énorme quantité de travail. À l'aide de la base de href de la balise résout beaucoup de problèmes que j'avais avec le fait d'avoir le même fichier HTML accessible sur les différents noms d'hôte, mais il introduit le problème de mauvais chemins sur un nom d'hôte.
Vous devez vous connecter pour publier un commentaire.
La bonne façon de faire cela est de faire un document.écrire de la balise basé sur l'hôte courant:
Correct:
Cette méthode a produit des résultats corrects dans IE, FF, Chrome et Safari. Il produit un (bon) résultat différent de celui procédant de la manière suivante:
Incorrect:
document.write
serait “correct” et l'insertion d'un noeud dans l'arborescence du document serait “incorrect”. La question tombe dans la catégorie “résoudre le mauvais problème”, mais l'approche décrite comme “correcte” ici souvent d'insérer unbase
balise dans un mauvais endroit pour commencer. Si le code est dans lehead
partie, c'est plutôt inutile (pourquoi ne pas mettre le droitbase
tag il y HTML?), et si elle est exécutée ailleurs, il sera généralement insérerbase
enbody
.http:
êtredocument.location.protocol
?Je pense que vous feriez mieux de le faire de cette façon
Comme
location.hostname
ne retourne pas le contexte de l'application de la racine! Vous pouvez également connecter ledocument.location
sur la consoleconsole.log
pour voir toutes les métadonnées disponibles surdocument.location
.document.write
). Sur une note pratique: cela a fonctionné pour moi dans jsFiddle toutdocument.write
n'a pas.document.write("");
HTML: