2016-10-28 59 views
0

在我的网页我有这样的脚本:脚本执行得到一次正确刷新页面 - 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.loaddocument.ready完成后。

任何人都可以帮助我解决这个问题吗?提前致谢。

+0

它正常工作对我来说,我得到'是here..'初始负载也 – jakob

+0

这听起来像一个简单的竞争条件。出于兴趣,重新加载是从缓存中检索'effect.js'? –

+0

@ jakob ..我在'document.ready'内有一些脚本,在'window.load'之后执行......我想在'window.load'之前运行这些脚本。 – Jenz

回答

0

这是关于脚本执行的时间。这听起来像一旦某些资源已被加载和缓存,行为就会改变。

的第一段代码,你已经是一个有点混乱:

if (document.readyState == 'complete') { 
    doOnLoad(); 
} 

我不知道为什么你需要这个问题,以及有载处理?看起来这个条件永远不会等于真,因为代码将在文档加载完成之前立即运行。至少,我会在这个块中放置一个console.log,这样我就可以确定触发doOnLoad的是什么。

尝试更换脚本的网页上只以下:

$(window).on("load", doOnLoad); 
function doOnLoad() { 
    console.log("here.."); 
} 
+0

@安德鲁。仍然没有变化.. – Jenz