gpt4 book ai didi

javascript - 在登录 asp.net MVC 应用程序期间检测 javascript...这段代码看起来正常吗?

转载 作者:行者123 更新时间:2023-11-28 02:46:40 25 4
gpt4 key购买 nike

我的登录操作最初看起来像这样:

return new RedirectResult(nameValueCollection["ReturnUrl"]);

但是,我想知道客户端在加载主页之前是否启用了JavaScript,所以我将其更改为:

return View(new LogInViewModel { ReturnUrl = nameValueCollection["ReturnUrl"] });

并发送以下 View 而不是即时重定向:

@model Obr.Web.Models.LogInViewModel

@{
Layout = null;
string noJSReturnUrl = Model.ReturnUrl + (Model.ReturnUrl.Contains("?") ? "&" : "?") + "noJS=true";
}

<!doctype html>

<html>
<head>
<title>Loggin in...</title>
<meta http-equiv="REFRESH" content="1;url=@noJSReturnUrl">
<script type="text/javascript">
window.location = "@Model.ReturnUrl";
</script>
</head>
<body>
<noscript>
Loggin in...<br />
<a href="@noJSReturnUrl">Click here if you are not redirected promptly.</a>
</noscript>
</body>
</html>

这个想法是,如果用户没有启用 JavaScript,他们会看到一条简短的加载消息,并且主页会在一秒钟后加载。如果启用了 JavaScript,页面会立即重新加载。将来我什至可以将视口(viewport)的尺寸等发布到服务器。

这看起来可行吗?如果 window.location 命令运行时间超过一秒,它会被元刷新中断,还是会阻止刷新?我希望是后者,所以我不需要为那些非 js 的人增加延迟。

我认为我的新方法为重定向的有效负载增加了一点额外的重量,但这不是额外的往返或任何东西,是吗?重定向无论如何都会发生,不是吗?

更新:我忽略了一个非常重要的观点。我实际上无法控制登录屏幕本身,只能控制它发布到的页面。此代码是依赖于外部身份验证机制的产品的一部分。

最佳答案

您不需要额外的重定向来检测 JavaScript。在用户登录的原始表单上,创建一个隐藏表单元素 javaScriptEnabled,默认值为 false。然后使用 JavaScript 将值设置为 true。然后您可以在处理程序中读取该值。如果为 true,则 JS 已启用。

不需要额外的页面。

关于javascript - 在登录 asp.net MVC 应用程序期间检测 javascript...这段代码看起来正常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4777975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com