2015-10-18 99 views
1

我有以下JS代码,它检查网页以查看是否以固定间隔在其上发布新密钥。现在的问题是:在函数内部调用函数时的不同结果

  • start()直接从开发控制台(F12)呼吁,结果是正确的,当我的功能$(document).ready调用它的结果是错误的,是的,我已经证实,没有100次网页上的内容正在改变。

  • 我只是好奇,看看是否瓦尔是不同步的,所以我在$(document).ready称为start() 2次了,还是错的结果,但是,当我打电话从F12 satrt()(从$(document).ready调用它20次后,我得到正确的结果。

  • 我已经确认所有事件都在等待对方finsih(也许叫synchronous)及其不正确的,任何单一的语句在不同的线程运行。

钍如果它可能如果F12称它,那么它的正确,如果$(document).ready称它是错误的。

一个intresting一点要注意:

当我在我的代码并没有$(document).ready,我叫wow()start()这也给了我错误的结果,但F12给人正确的。 现在,我有$(document).ready,如果我从它调用start()哪些inturn调用wow()给我错误的结果,但现在如果我从我的控制台调用start(),它给了我正确的结果!

我acually想简单的形式做:按页

  1. 等待完成加载
  2. 电话wow()
  3. 等待wow()完成
  4. 刷新页面

相同的过程在无限循环中继续。

谦虚感谢任何帮助,这已经让我的时间差不多5-6小时!

JS代码:http://pastebin.com/9UJYdepU

编辑:

正确的输出:

a.js:136 Started 
a.js:33 Called Wow 
a.js:83 ---------------------KEY 7.0---------------- 
a.js:83 ---------------------KEY 7.1---------------- 
a.js:83 ---------------------KEY 7.2---------------- 
a.js:102 LAST used keys : Saab,Volvo,BMW,4E69G-8GNG4-JCZ4Z,H63HQ-VHWPX-ZCJ8J,FKZGK-MXL5C-P2YTE,4E69G-xxxxxx-JCZ4Z,4E69G-AAAxx-JCZ4Z,4E69G-AAAxx-JasasCZ4Z,4E69G-AAAxx-JasaaaasCZ4Z 
a.js:140 WOWO DONW 

错误输出:

Started 
a.js:33 Called Wow 
a.js:102 LAST used keys : Saab,Volvo,BMW,4E69G-8GNG4-JCZ4Z,H63HQ-VHWPX-ZCJ8J,FKZGK-MXL5C-P2YTE,4E69G-xxxxxx-JCZ4Z,4E69G-AAAxx-JCZ4Z,4E69G-AAAxx-JasasCZ4Z,4E69G-AAAxx-JasaaaasCZ4Z 
a.js:140 WOWO DONW 

document.getElementsByTagName("p");给出:http://pastebin.com/JXQ9483N localStorage.getItem("usedp")给出Saab,Volvo,BMW,4E69G-8GNG4-JCZ4Z,H63HQ-VHWPX-ZCJ8J,FKZGK-MXL5C-P2YTE,4E69G-xxxxxx-JCZ4Z,4E69G-AAAxx-JCZ4Z,4E69G-AAAxx-JasasCZ4Z,4E69G-AAAxx-JasaaaasCZ4Z

回答

0

最后我解决了它!这一切都是因为邪恶Jquery(对不起,如果我伤害了你)。

$(文件)。就绪被触发,当页面开始加载不是当它已经finsihed加载,我的另一种解决方案是:

var myVar = setInterval(function(){ chk() }, 500); 
function chk(){ 

if(document.readyState=="complete"){ 
     clearInterval(myVar); 

    startt(); 


} 
}