Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何显示";“加载页面”;只有在需要超过2秒的情况下?_Javascript_User Experience - Fatal编程技术网

Javascript 如何显示";“加载页面”;只有在需要超过2秒的情况下?

Javascript 如何显示";“加载页面”;只有在需要超过2秒的情况下?,javascript,user-experience,Javascript,User Experience,基于用户体验,我面临一个相当奇怪的问题 我的项目是一个一页完整的JavaScript应用程序。我决定显示一个“加载页面”模式,但在本地,它显示为flash,因为应用程序加载很快 最好的情况是,如果应用程序加载时间超过2秒,它将显示它(理想情况下,在加载开始时,可能通过计算加载量和传输速度?),如果显示,则至少保持2/3秒(以避免快速显示/隐藏的闪烁) 我想避免的问题是,为我的用户显示一个“加载”模式,该模式在对他们的眼睛最有利之前保持2/3秒,即使应用程序在2/3秒延迟后1/2秒准备就绪 有没有

基于用户体验,我面临一个相当奇怪的问题

我的项目是一个一页完整的JavaScript应用程序。我决定显示一个“加载页面”模式,但在本地,它显示为flash,因为应用程序加载很快

最好的情况是,如果应用程序加载时间超过2秒,它将显示它(理想情况下,在加载开始时,可能通过计算加载量和传输速度?),如果显示,则至少保持2/3秒(以避免快速显示/隐藏的闪烁)

我想避免的问题是,为我的用户显示一个“加载”模式,该模式在对他们的眼睛最有利之前保持2/3秒,即使应用程序在2/3秒延迟后1/2秒准备就绪

有没有一种行之有效的方法可以做到这一点


注意:我看到了,这是一个很好的开始,但并不能完全解决我的问题(可以生成显示/隐藏闪存)。

您可以使用设置超时功能

setTimeout(function() {
      // your image to be displayed after particular seconds
}, 2000);

我不认为你通过计算估计的装载时间来帮自己一个忙。所以我的建议是,每次加载页面时都显示modal,加载过程一结束就隐藏它。这样,就不需要超时或诸如此类的事情

但是,如果您必须确保模式显示至少3秒钟,您可以这样做(但我个人不太喜欢让用户等待更长的时间):

//入口点(第一个要运行的脚本,最好放在标记中)
var initFinished=false,
canHideModal=false;
setTimeout(函数(){
如果(initFinished==true){
//隐藏模态
} 
canHideModal=true;
}, 3000);
//初始化填充/页面加载/dom
document.addEventListener(“DOMContentLoaded”,init,false);
函数init(){
//…更多的初始内容
//此时,所有内容都已加载
如果(canHideModal==真){
//隐藏模型
}
initFinished=true;
}

再次告诉我设置2秒超时以显示加载模式的问题是什么(在一个if中,它当然会检查页面是否已加载)?您是否担心在2.5秒页面加载的情况下,此模式仅显示0.5秒?是的,这正是原因:)
//entry point (first script to run, ideally put in the <head> tag)
var initFinished = false,
    canHideModal = false;

setTimeout(function(){
   if (initFinished === true) {
       //hide modal
   } 
   canHideModal = true;
}, 3000);


//initialization stuff / page load / dom

document.addEventListener("DOMContentLoaded", init, false);

function init() {

   //...more init stuff

   //at this point everything is loaded
   if (canHideModal === true) {
       //hideModel
   }
   initFinished = true;
}