Há outro truque que eu uso e nunca vi em nenhuma resposta do StackOverflow: o uso do atributo "src" de uma imagem produzirá o caminho base completo do seu site. Por exemplo :
var dummy = new Image;
dummy.src = '$'; // using '' will fail on some browsers
var root = dummy.src.slice(0,-1); // remove trailing '$'
Em um URL como http://domain.com/somesite/index.html
,
root
será definido como http://domain.com/somesite/
. Isso também funciona para o host local ou qualquer URL base válido.
Observe que isso causará uma falha na solicitação HTTP na $
imagem fictícia. Você pode usar uma imagem existente para evitar isso, com apenas pequenas alterações no código.
Outra variante usa um link fictício, sem efeito colateral nas solicitações HTTP:
var dummy = document.createElement ('a');
dummy.href = '';
var root = dummy.href;
Eu não testei em todos os navegadores.