在进行Ajax调用之前防止页面加载

时间:2015-09-28 23:30:54

标签: javascript asp.net ajax

我们正在集成一个单点登录界面,它提供了一个非常好的远程JavaScript调用来检索用户信息。我们通过远程URL引用的库甚至可以更改登录/注销链接的状态,并在它们已经过身份验证时提供一些用户数据(它们的名称和诸如此类)。资源返回我们解析的Json对象,然后更新应用程序中的会话状态以维护其用户信息。

我们的问题是ASP.NET在调用和完成JavaScript对象之前提供HTML并完成它的页面加载事件(Web表单),更重要的是在返回数据并对服务器进行Ajax调用之前更新会话。结果是由JavaScript引起的页面“闪存”(它在注销后开始,然后在脚本完成后切换到登录)和加载到错误状态的页面导致我们不必要地重定向用户。

在远程脚本完成之前,是否有人都在阻止页面加载?我知道我们可以在脚本完成之前隐藏正文内容,这将消除闪烁(并为我们的用户造成烦人的等待),但这不会消除我们的潜在会话问题。

有什么想法吗?提前谢谢。

BD

1 个答案:

答案 0 :(得分:0)

据推测,第三方脚本会修改有问题的元素或正文或html标记上的类。

这将允许您默认隐藏按钮并使用添加的类来包含然后显示它们的css规则

HTML

<!-- BEFORE -->
<button id="login-btn">Login</button>
<!-- AFTER-->
<button id="login-btn" class="loginScriptButtonClass">Login</button>

OR

<!-- BEFORE -->
<body>
<!-- AFTER-->
<body class="loginScriptBodyClass">

CSS

#login {visibility:hidden}

#login.loginScriptButtonClass {visibility:visible}
.loginScriptBodyClass #login {visibility:visible}

如果它不是修改类的情况,它也可以为你提供一个完成回调钩子,你可以自己切换类