在视图中调用脚本时设置超时?或在脚本中设置有效超时?
Posted
技术标签:
【中文标题】在视图中调用脚本时设置超时?或在脚本中设置有效超时?【英文标题】:set timeout on calling a script on view? or setting an effective timeout inside script? 【发布时间】:2018-07-26 21:32:41 【问题描述】:通过一些努力,我部分实现了我想要的,但如果可以做得更好,我还在寻找其他选择。下面是场景:
当密码重置成功时,有一个控制器会显示一个视图,并且在该视图上我正在调用一个重定向到登录页面的脚本(它实际上会访问身份服务器并使用有效令牌返回登录页面)。
我发现很难在视图上显示成功消息,因为重定向发生得如此之快,以至于用户将无法显示消息(我尝试了其他可能的方式来显示消息设置 ViewBag、TemData 等,但没有任何效果并且这可能是我可以打赌的最好方法)。
尝试在脚本内的函数上设置 setTimeout,但它似乎工作部分(这就是我的想法,可能它不起作用,我看到的延迟可能是因为调用的 url 需要时间回应,不确定!)。
所以我需要一些关于如何实现延迟或超时的建议:
查看代码:
@if (ViewBag.Success != null)
<div>
<p class="alert-success">@ViewBag.Success</p>
</div>
@section scripts
@if (Model.AutomaticRedirectToSignIn)
// this is the script called
<script src="~/js/signout-redirect.js"></script>
脚本代码:
window.addEventListener("load", function ()
var a = document.querySelector("a.PostLogoutRedirectUri");
if (a)
window.location = a.href;
);
我在下面尝试过:
方法一:
window.addEventListener("load", setTimeout(function ()
var a = document.querySelector("a.PostLogoutRedirectUri");
if (a)
window.location = a.href;
), 5000);
方法二:
setTimeout(window.addEventListener("load", function ()
var a = document.querySelector("a.PostLogoutRedirectUri");
if (a)
window.location = a.href;
), 5000);
方法 2,似乎给我带来了一些延迟(这是我可以观察到的,但不确定)。我无法完全更改脚本,因为我不确定它可能会影响其他地方。我只是想使用现有的重定向代码供我使用。
任何人都可以建议一个更好的方法来延迟到位,有没有办法在延迟后在我的视图上调用脚本?你的建议会有很大帮助。谢谢。
【问题讨论】:
我不得不改变我的方法。我无法解决这个问题。我只是离开了显示成功消息的视图页面,并要求用户单击该消息下方的链接返回登录页面.. 【参考方案1】:我不得不改变我的方法..我无法解决这个问题..我只是离开显示成功消息的视图页面,并要求用户单击该消息下方的链接以返回登录页面..
【讨论】:
以上是关于在视图中调用脚本时设置超时?或在脚本中设置有效超时?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Ruby 的 RestClient gem 中设置超时?