如果连接是本地主机,如何检查与JavaScript?

如果页面加载在我的本地机器上,我想检查我的javascript。

我想这样做的原因是,当我开发我喜欢确保我的服务器端(C#)validation工作正常。 所以我喜欢看到客户端和服务器端出现错误。

所以当我testing时,我有一个标志在我的jQueryvalidation的东西,只是总是让无效的数据通过。 这样一来我就可以看到客户端和服务器错误。

但是现在我需要从开发到生产的时候手动去换。

location.hostnamevariables给你当前的主机。 这应该足以让你确定你在哪个环境。

 if (location.hostname === "localhost" || location.hostname === "127.0.0.1") alert("It's a local server!"); 

如果在浏览器中启动静态html,例如从file:///C:/Documents and Settings/Administrator/Desktop/检测“localhost”的位置不起作用。 location.hostname将返回空string。 所以

 if (location.hostname === "localhost" || location.hostname === "127.0.0.1" || location.hostname === "") alert("It's a local server!"); 

你可以用c#在页面后面检测你的代码,如下所示:

 if ((Request.Url.Host.ToLower() == "localhost")) { // ..., maybe set an asp:Literal value that's in the js } 

或者,如果您想从客户端脚本执行此操作,则可以检查window.location.host的值。

 if (window.location.host == "localhost") { // Do whatever } 

希望这可以帮助。

一个简单的方法是只检查本地主机的主机名,或者检查一下你的自定义域名,在本例中是“.local”,比如http://testsite.local

 var myUrlPattern = '.local'; if (window.location.hostname === "localhost" || location.hostname === "127.0.0.1" || window.location.hostname.indexOf(myUrlPattern) >= 0) { alert("It's a local server!"); } 

以上答案主要解决问题,但…

  • 如果localhost不一定是“localhost /”呢?
  • 如果你想在开发过程中进行FEvalidation呢?
  • 如果你在开发期间想要不同的行为呢?
    validation,validation,不validation

一个解决scheme是设置位置散列并检查它。

http://myname.foo.com/form.html#devValidation

您可以使用开关添加无限选项

 switch(location.hash) {} case '#devValidation': // log the results and post the form break; case '#beValidation': // skip front end validation entirely break; case '#noValidation': // skip all validation $('[name=validationType']).val('novalidation'); break; case '#feValidation': default: // do fe validation break; } 

仍然不是所有,但它可能是一个小改进。 您现在可以创build一个域数组,并使用.includes

 const LOCAL_DOMAINS = ["localhost", "127.0.0.1", ...]; if (LOCAL_DOMAINS.includes(window.location.hostname)) alert("It's a local server!");