Je souhaite définir l'attribut href de base d'une page en JavaScript en fonction du nom d'hôte actuel. J'ai généré des pages HTML qui peuvent être visualisées sur différents noms d'hôte, ce qui signifie que la génération d'une balise href de base fonctionnera dans un nom d'hôte mais sera incorrecte dans l'autre.Comment définir la base href d'une page en Javascript?
Répondre
La bonne façon de le faire est de faire un document.write de l'étiquette basé sur l'hôte actuel:
Correct:
<script type="text/javascript">
document.write("<base href='http://" + document.location.host + "' />");
</script>
Cette méthode a produit des résultats corrects dans IE, FF, Chrome et Safari. Elle produit un (bon) résultat différent que Dowing les éléments suivants:
incorrect:
<script type="text/javascript">
var newBase = document.createElement("base");
newBase.setAttribute("href", document.location.hostname);
document.getElementsByTagName("head")[0].appendChild(newBase);
</script>
J'ai rencontré des problèmes avec le robot d'indexation de Google en utilisant cette méthode, je n'ai pas mis d'espace entre 'et />', et le robot d'exploration interprète ma base href comme document.location.hostname '/>. Cela peut poser un problème avec cette solution.Pour plus d'informations, voir: http://www.google.com/support/forum/p/Webmasters/ thread? tid = 2cff8eadfdf3a393 & hl = fr & fid = 2cff8eadfdf3a393000498a325f9c75d –
Il n'y a aucune raison pour laquelle 'document.write' serait" correct "et l'insertion correcte d'un noeud dans l'arbre du document serait" incorrecte ". La question tombe dans la catégorie «résoudre le mauvais problème», mais l'approche décrite comme «correcte» ici insère souvent une balise «de base» à un mauvais endroit, pour commencer. Si le code est dans la partie 'head', il est plutôt inutile (pourquoi ne pas y mettre la balise' base' droite comme HTML normal?), Et s'il est exécuté ailleurs, il insérera habituellement 'base' dans' body'. –
Je suis curieux de savoir pourquoi la méthode "incorrecte" est incorrecte. –
<script>
document.write("<base href='"+ window.location.protocol +'//' + window.location.host + "' >");
</script>
Je pense que vous feriez mieux de le faire de cette façon
<script type="text/javascript">
document.head.innerHTML = document.head.innerHTML + "<base href='" + document.location.href + "' />";
</script>
Comme location.hostname
ne retourne pas le contexte de l'application racine! Vous pouvez également enregistrer le document.location
sur la console console.log
pour voir toutes les métadonnées disponibles sur document.location
.
- 1. Modifier la base href en utilisant javascript
- 2. Magento - comment inclure le fichier javascript page par page base
- 3. Javascript href link counter
- 4. JavaScript onclick changer href
- 5. javascript universel pour définir la fonctionnalité de la page d'accueil
- 6. annuler la page de chargement en javascript
- 7. Comment obtenir du contenu href "brut" en JavaScript
- 8. Comment trouver la sous-chaîne de href avec javascript
- 9. comment modifier la propriété de base iframe en utilisant javascript
- 10. Comment obtenir la valeur href en utilisant jQuery?
- 11. Je veux construire Href en utilisant l'événement onclick. Ajouter des paramètres de champs cachés sur la page à Href
- 12. Javascript - Emplacement href avec _blank
- 13. numéro de base javascript
- 14. Comment définir l'encodage de la page mécanisée?
- 15. Comment définir la largeur d'une mise en page dans Android?
- 16. avoir une idée de comment définir la mise en page?
- 17. Appel href à partir de JavaScript
- 18. jquery obtenir la valeur href et mettre en ajax.load
- 19. jQuery comment définir cliquez sur href dans le div?
- 20. Zend_Framework - Comment mettre du Javascript dans la mise en page?
- 21. Javascript - Confirmation en quittant la page
- 22. Comment obtenir la valeur de l'ancre href?
- 23. Extraction d'une partie du chemin a href en utilisant Javascript
- 24. la définition d'un identifiant de la page en javascript
- 25. définir par défaut sur la page Web
- 26. Effacer la page HTML en utilisant JavaScript
- 27. Comment naviguer dans href dans une balise d'ancrage via JavaScript
- 28. Définir un lieu en javascript
- 29. Redirect à la page avec les paramètres en javascript
- 30. Regex javascript pour correspondre à href
J'ai généralement un fichier JS de constantes que j'inclus dans lequel je place '$ .serverRoot' pour être la racine relative de l'hôte (par exemple' $ .serverRoot = '/ myapp /'; ' –
Cela fonctionne pour des choses comme AJAX demandes, mais si je devais ajuster tous les chemins d'image et lier hrefs pour tenir compte d'une variable Javascript je devrais faire une énorme quantité de travail.L'utilisation de la balise de base href résout beaucoup de problèmes que j'avais avec le fait d'avoir le même fichier HTML accessible sur différents noms d'hôte, mais il a introduit le problème des chemins incorrects sur un nom d'hôte –