Hay otro truco que uso y que nunca vi en ninguna respuesta de StackOverflow: el uso del atributo "src" de una imagen generará la ruta base completa de su sitio. Por ejemplo :
var dummy = new Image;
dummy.src = '$'; // using '' will fail on some browsers
var root = dummy.src.slice(0,-1); // remove trailing '$'
En una URL como http://domain.com/somesite/index.html
,
root
se establecerá en http://domain.com/somesite/
. Esto también funciona para localhost o cualquier URL base válida.
Tenga en cuenta que esto provocará una solicitud HTTP fallida en la $
imagen ficticia. Puede usar una imagen existente en su lugar para evitar esto, con solo pequeños cambios en el código.
Otra variante utiliza un enlace ficticio, sin efectos secundarios en las solicitudes HTTP:
var dummy = document.createElement ('a');
dummy.href = '';
var root = dummy.href;
Sin embargo, no lo probé en todos los navegadores.