我们正在集成一个单点登录界面,它提供了一个非常好的远程JavaScript调用来检索用户信息。我们通过远程URL引用的库甚至可以更改登录/注销链接的状态,并在它们已经过身份验证时提供一些用户数据(它们的名称和诸如此类)。资源返回我们解析的Json对象,然后更新应用程序中的会话状态以维护其用户信息。
我们的问题是ASP.NET在调用和完成JavaScript对象之前提供HTML并完成它的页面加载事件(Web表单),更重要的是在返回数据并对服务器进行Ajax调用之前更新会话。结果是由JavaScript引起的页面“闪存”(它在注销后开始,然后在脚本完成后切换到登录)和加载到错误状态的页面导致我们不必要地重定向用户。
在远程脚本完成之前,是否有人都在阻止页面加载?我知道我们可以在脚本完成之前隐藏正文内容,这将消除闪烁(并为我们的用户造成烦人的等待),但这不会消除我们的潜在会话问题。
有什么想法吗?提前谢谢。
BD
答案 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}
如果它不是修改类的情况,它也可以为你提供一个完成回调钩子,你可以自己切换类