Quiero establecer el atributo href base de una página en Javascript basado en el nombre de host actual. He generado páginas HTML que se pueden ver en diferentes nombres de host, lo que significa que generar una etiqueta href base funcionará en un nombre de host pero será incorrecta en el otro.¿Cómo configuro la href base de una página en Javascript?
Respuesta
La forma correcta de hacer esto es hacer un document.write de la etiqueta con sede fuera el nombre de host actual:
correcta:
<script type="text/javascript">
document.write("<base href='http://" + document.location.host + "' />");
</script>
Este método ha producido resultados correctos en el IE, FF, Chrome y Safari. Se produce un resultado diferente (correcta) de dowing la siguiente:
incorrecta:
<script type="text/javascript">
var newBase = document.createElement("base");
newBase.setAttribute("href", document.location.hostname);
document.getElementsByTagName("head")[0].appendChild(newBase);
</script>
He tenido algunos problemas con el rastreador de Google mientras usaba este método. No puse un espacio entre 'y />', y el rastreador está interpretando mi href base como document.location.hostname '/>. Esto puede ser un problema con esta solución. Para obtener más información, consulte: http://www.google.com/support/forum/p/Webmasters/ hilo? tid = 2cff8eadfdf3a393 & hl = es & fid = 2cff8eadfdf3a393000498a325f9c75d –
No hay ninguna razón para que 'document.write' sea "correcto" y la inserción correcta de un nodo en el árbol del documento sería "incorrecta". La pregunta entra en la categoría "resolver el problema equivocado", pero el enfoque descrito como "correcto" aquí a menudo inserta una etiqueta 'base' en un lugar equivocado, para empezar. Si el código está en la parte 'head', es bastante inútil (¿por qué no poner la etiqueta' base' correcta como HTML normal?), Y si se ejecuta en otro lugar, generalmente insertará 'base' en' body'. –
Tengo curiosidad de por qué el método "incorrecto" es incorrecto. –
<script>
document.write("<base href='"+ window.location.protocol +'//' + window.location.host + "' >");
</script>
creo que será mejor que haces de esta manera
<script type="text/javascript">
document.head.innerHTML = document.head.innerHTML + "<base href='" + document.location.href + "' />";
</script>
Como location.hostname
no devuelve la raíz de contexto de aplicación! También puede registrar el document.location
en la consola console.log
para ver todos los metadatos disponibles en document.location
.
- 1. href = "javascript:" vs. href = "javascript: void (0)"
- 2. getBaseURL() de JavaScript llamada en un href = ""
- 3. ¿Cómo puedo obtener el href de todas las imágenes en una página usando JavaScript?
- 4. ¿Cómo desactivo un enlace href en JavaScript?
- 5. Llamar a href desde JavaScript
- 6. ¿Qué es href = javascript :;
- 7. ¿Cómo configuro la página predeterminada de mi aplicación en IIS7?
- 8. ¿Cómo permitir que IE admita la etiqueta base html con href relativo? como: `<base href =" ../ "></base>`
- 9. acordeón jQuery, la apertura de una caja en base a href
- 10. Javascript: cómo configuro la variable 'this' para una función
- 11. Obteniendo el atributo href de una imagen con Javascript
- 12. ¿Cómo creo una página base en WPF?
- 13. Cambiar el href de una etiqueta ancla con javascript
- 14. Cómo hacer que la página con Hash Tag Href Refresh
- 15. ¿Cómo configuro una cookie (encabezado) con XMLHttpRequest en JavaScript?
- 16. ¿Cuál es la diferencia entre href = "", href = "#" y href = "javascript: void (0)"?
- 17. Una página base en ASP.NET
- 18. ¿Cómo ingresar Javascript en una página wiki?
- 19. enlace html, href asignación de una función de Javascript
- 20. ¿Cómo configuro el flag HttpOnly de una cookie con javascript?
- 21. Cómo obtener contenidos href "en bruto" en JavaScript
- 22. Cómo llamar a una función de JavaScript desde la etiqueta href en html?
- 23. Cómo incluir JavaScript en el encabezado de la página MVC4
- 24. Cómo navegar href en la etiqueta de anclaje a través de JavaScript
- 25. Ejecutando JavaScript en href de enlaces con Python
- 26. ¿Cómo encontrar un enlace en una página en función de su atributo href?
- 27. ¿Cómo ejecutar Page_Load() en la clase base de la página?
- 28. href = "#" vuelve a dirigir a la página de índice, pero no de la página actual arriba
- 29. Cómo llamar a la función javascript de la página secundaria desde la página maestra javascript
- 30. ¿Cómo configuro una ruta para la página de inicio de un sitio ASP.NET MVC?
Normalmente tengo un archivo constants JS que incluyo y establezco '$ .serverRoot' para que sea la raíz relativa del host (ej.' $ .serverRoot = '/ myapp /'; ' –
Eso funciona para cosas como AJAX solicitudes, pero si tuviera que ajustar todas las rutas de las imágenes y vincular hrefs para dar cuenta de una variable Javascript, tendría que hacer una gran cantidad de trabajo. Usar la etiqueta href base resuelve muchos problemas que estaba teniendo con tener el el mismo archivo HTML accesible en diferentes nombres de host, pero introdujo el problema de rutas incorrectas en un nombre de host. –