如果连接是本地主机,如何检查与JavaScript?
如果页面加载在我的本地机器上,我想检查我的javascript。
我想这样做的原因是,当我开发我喜欢确保我的服务器端(C#)validation工作正常。 所以我喜欢看到客户端和服务器端出现错误。
所以当我testing时,我有一个标志在我的jQueryvalidation的东西,只是总是让无效的数据通过。 这样一来我就可以看到客户端和服务器错误。
但是现在我需要从开发到生产的时候手动去换。
location.hostname
variables给你当前的主机。 这应该足以让你确定你在哪个环境。
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!");