当前位置: 首页 > 面试题库 >

页面加载时的Chrome AJAX导致“忙光标”保留

程磊
2023-03-14
问题内容

在Google Chrome浏览器中,AJAX在$(function(){....})内调用;似乎可以保持页面加载。

我的网站上有几个带有标签的页面。因为我使用的是廉价的Godaddy托管,所以我希望页面尽快加载。因此,我想在1个标签上加载页面,然后在后台使用AJAX加载其他标签。当我从运行AJAX

$(function(){
    /*AJAX CODE HERE */
});

光标显示页面已长时间加载(http://jsfiddle.net/mazlix/7fDYE/9/)

我想出了一种方法(使用ChromeAtleast),可以使用setTimeout();(http://jsfiddle.net/mazlix/7fDYE/8/)进行某种程度的修复,但这仅在您正确预测窗口何时完全加载完毕并明显使加载时间更长。我想要一种在页面加载后立即通过AJAX加载内容的方法,因此在等待返回的AJAX时不会显示“忙光标”。


问题答案:

只要没有对服务器的新查询,Google
Chrome就会显示“加载指示器”。显示加载指示符时,所有新请求都导致Chrome延长显示指示符的时间。此外,在esc显示指示器时按时,所有请求都将中止!这些包括AJAX请求,甚至Flash请求!:我以为是YouTube造成的,但这变成了Chrome的惯常行为。

避免“延长”显示Loading指示符时间的唯一方法 是在隐藏loading指示符之后
发出请求:即,对服务器的所有查询完成时。JQuery的文档上.load()说:

当加载事件和所有子元素都已完全加载时,会将加载事件发送到该元素。该事件可以发送到与URL关联的任何元素:图像,脚本,框架,iframe和window对象

因此,如果您确定页面上只有图像,脚本和框架, window.load()则会在需要时将其触发。添加 setTimeout()到它可以根据需要工作。这是一个示例: http
//jsfiddle.net/7fDYE/22/

如果在请求 之前 还有其他请求,则应等待它们完成!例如,您知道除了图像/脚本等之外,在页面加载之前还有3个AJAX请求。你可以有这样的事情:

var loaded=0,needsToBeLoaded=4; //3 AJAX + window
function onLoad(){
    loaded++;
    if(loaded==needsToBeLoaded){
         //do the AJAX request   
    }
}
window.load(onLoad);
// add onLoad() to all 3 AJAX request handlers

我不确定您可以如何处理Flash请求…



 类似资料:
  • 问题内容: 快速的问题,我已经尝试自己弄清楚这一点,但是在试图弄清页面为什么或如何重新加载以及正在/不应该执行其应做的工作时,使用会话变量可能会造成混淆。 在任何(非脚本)情况下,页面重新加载(使用JavaScript,f5,ctrl + f5,浏览器重新加载按钮等)是否会导致表单重新发布? (这与在C#代码中使用IfPost分支有关,例如下面的示例代码): 我只是需要知道在这里期望什么,以便可以

  • 好的,首先,我将告诉这应该如何工作:我有一个页面的图片链接下侧,点击一个图片,该链接的信息出现在另一个div。我使用jQuery/Ajax将链接id发布到一个php文件中,并将该数据返回到所选的div。链接应该分页,以便一次显示4个。 这是正在发生的事情:post部分是ok的,当我单击一个链接时,正确的数据将显示在所选的div中。我不知道如何使链接div分页虽然。我需要他们分页时,页面加载,现在当

  • 问题内容: 这有点难以解释,所以我会尽力而为 因此,在加载HTML页面时,我希望有一个很酷的加载屏幕在显示。完成加载后,我希望清除加载屏幕并显示HTML文档。 基本上,我想要这样: CSS: HTML: 页面加载时发生的情况。当页面加载时,将被清除,并显示HTML文档的其余部分。(我正在建立一个学分系统,虽然学分加载时我真的很需要它来说它正在加载,但是人们抱怨他们无法单击任何东西,我不得不告诉他们

  • 请考虑以下代码: 忽略所有axios请求: login.js 此页面通过将loggedIn更改为true并将currentUser更改为“fa”来更新GlobalContext。 profile.js 这将获取状态并记录它。 下面是reducer.js和globalcontext.js: 一切工作都很好,一旦我登录,我就会被重定向到主页,就像我应该做的那样,正确的状态正在被记录。 但是,一旦我刷新

  • 问题内容: 我正在研究一个使用Angularjs和Twitter Bootstrap的项目。 Bootstrap使用#来切换组件(例如,弹出框,模式框等): 问题是当我单击具有href属性的按钮时,它会导致整个页面重新加载,这意味着当前页面中的所有内容都会丢失。 有办法防止这种情况吗? 一些 额外的 信息: 当我将鼠标悬停在按钮上时,URL很奇怪。例如,我当前页面的网址是 该按钮的href为 我希

  • 我们正在尝试找到一个网站的Selenium WebDriver的页面加载时间。我们想要得到页面加载时间的多个屏幕/网页在网站,如登录和登录后,主屏幕等。 我们的driver.get()调用是针对登录URL的,