脚本执行得到一次正确刷新页面 - jQuery的
问题描述:
在我的网页我有这样的脚本:脚本执行得到一次正确刷新页面 - jQuery的
<head>
<script src="scripts/effect.js"></script>
<script>
if (document.readyState == 'complete') {
doOnLoad();
}
$(window).bind("load", doOnLoad);
function doOnLoad() {
console.log("here..");
}
</script>
</head>
effect.js文件中包含的脚本,如下所示:
$(document).ready(function(){
console.log("yes");
// here I've script for reading a text file using ajax and manipulating the result from text file
$.ajax({
// code goes here
console.log("ajax");
});
});
问题是当我最初运行页面时,我没有得到结果。当时我得到的控制台输出,
yes
here..
ajax
但是,当我再一次刷新页面我得到的结果和控制台打印,如:
yes
ajax
here..
如何运行window.load
的document.ready
完成后。
任何人都可以帮助我解决这个问题吗?提前致谢。
答
这是关于脚本执行的时间。这听起来像一旦某些资源已被加载和缓存,行为就会改变。
的第一段代码,你已经是一个有点混乱:
if (document.readyState == 'complete') {
doOnLoad();
}
我不知道为什么你需要这个问题,以及有载处理?看起来这个条件永远不会等于真,因为代码将在文档加载完成之前立即运行。至少,我会在这个块中放置一个console.log,这样我就可以确定触发doOnLoad的是什么。
尝试更换脚本的网页上只以下:
$(window).on("load", doOnLoad);
function doOnLoad() {
console.log("here..");
}
+0
@安德鲁。仍然没有变化.. – Jenz
它正常工作对我来说,我得到'是here..'初始负载也 – jakob
这听起来像一个简单的竞争条件。出于兴趣,重新加载是从缓存中检索'effect.js'? –
@ jakob ..我在'document.ready'内有一些脚本,在'window.load'之后执行......我想在'window.load'之前运行这些脚本。 – Jenz