localizacao.máquina vs localização.compatibilidade entre o nome da máquina e o navegador?
Qual destes é o mais eficaz vs verificação se o agente do Utilizador está a aceder através do domínio correcto.
gostaríamos de mostrar um pequeno aviso de estilo js baseado em' top bar ' se eles estão acessando o domínio usando algum tipo de proxy web (como ele tende a quebrar o js).
estávamos a pensar em usar o seguinte:
var r = /.*domain\.com$/;
if (r.test(location.hostname)) {
// showMessage ...
}
Isso trataria de todos os subdomínios que usarmos.
qual devemos usar a máquina ou o nome da máquina?
no Firefox 5 e no cromo 12:
console.log(location.host);
console.log(location.hostname);
.. mostra o mesmo para ambos.
Isso é porque o porto não está na barra de endereços?O w3schools diz que a máquina contém o porto.
deve ser a localização.host / hostname ser validado ou podemos ter bastante certeza em IE6+ e todos os outros que ele vai existir?
6 answers
A Máquina apenas inclui o número do porto se existir um indicado. Se não houver nenhum número de porta especificamente no URL, então ele retorna o mesmo que hostname. Escolha se quer corresponder ao número do porto ou não. Ver https://developer.mozilla.org/en/window.location para mais informações.
Presumo que queiras que o nome do host fique com o nome do site.
Se está a insistir em usar o window.location.origin
Você pode colocar isto em cima de seu código antes de ler o origin
if (!window.location.origin) {
window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
}
Para que conste, foi a pergunta original. Provavelmente já o editaram. :)
A sua pergunta principal foi respondida acima. Só queria dizer que a expressão regular que estás a usar tem um problema. Ele também terá sucesso em foo-domain.com
que não é um subdomínio de domain.com
O que realmente queres é isto:
/(^|\.)domain\.com$/
MDN: https://developer.mozilla.org/en/DOM/window.location
Parece que irá obter o mesmo resultado para ambos, mas hostname
contém um nome de máquina livre sem parêntesis ou número de Porto.