Quero verificar no meu javascript se a página que está sendo carregada está na minha máquina local.
A razão pela qual desejo fazer isso é que, durante o desenvolvimento, gosto de ter certeza de que a validação do lado do servidor (C #) está funcionando corretamente. Então, eu gosto de ver os erros do lado do cliente e do lado do servidor aparecerem.
Então, enquanto estou testando, tenho um sinalizador no meu jquery validate que sempre permite a passagem de dados inválidos. Desta forma, vejo os erros do lado do cliente e do servidor de uma só vez.
No entanto, agora eu tenho que ir e mudar manualmente para frente e para trás ao passar do desenvolvimento para a produção.
javascript
jquery
localhost
chobo2
fonte
fonte
Respostas:
A
location.hostname
variável fornece o host atual. Isso deve ser o suficiente para você determinar em que ambiente está.fonte
se iniciar html estático no navegador, por exemplo, de um local como
file:///C:/Documents and Settings/Administrator/Desktop/
detectar "localhost", não funcionará.location.hostname
retornará uma string vazia. tãofonte
Ainda não é um problema, mas pode ser uma pequena melhoria. Agora você pode criar uma variedade de domínios e usar .includes
fonte
É assim que ele é verificado no React, registra o service worker , uma boa maneira de verificar se você está no localhost verificando o nome do host, incluindo localhost e IPv6 , e iniciar a correspondência com 127 :
fonte
Uma maneira fácil de fazer isso seria apenas verificar o nome do host em relação ao host local ou verificar seu nome de domínio personalizado em uma substring, neste caso urls ".local", como http: //testsite.local
fonte
Forma mais curta usando a mesma mecânica de outros scripts:
fonte
Este também cobre alguns casos comuns em que os IPs da rede local começam com
10.0.
ou192.168.
ou Bonjour como domínio terminando em.local
:fonte
Você pode detectar em um de seus códigos por trás das páginas com c #, assim:
Ou se quiser fazer isso a partir do script do cliente, você pode verificar o valor de window.location.host.
Espero que isto ajude.
fonte
fonte
As respostas acima principalmente resolvem o problema, mas ...
(por exemplo , validação, seja validação, sem validação )
Uma solução é definir o hash do local e verificá-lo.
http://myname.foo.com/form.html#devValidation
Você pode adicionar opções ilimitadas com um interruptor
fonte
A expressão regular é mais lenta *, mas curta e organizada. Além disso, ninguém aqui verifica o localhost IPv6 (:: 1)
Ele verifica o localhost geral, o domínio .local e o arquivo: (nome do host vazio).
*) No Chrome, o desempenho de
[].includes(...)
é o melhor (42 ms), seguido por loop simples (for, while) com verificação de item de array (119 ms), depois[].indexOf(...) > -1
(289 ms) e finalmente o regexp (566 ms). Mas essas medidas são de alguma forma relativas, porque navegadores diferentes são otimizados de forma diferente. Em FF 52 ESRincludes
eindexOf
com resultados semelhantes, regexp é 2 × mais lento e o loop 6 × mais lento.fonte
Com base nos comentários acima, a seguinte expressão regular me ajudou a verificar se o url é 'localhost', algum endereço IP IPv4 ou IPv6.
fonte