叹...
var dcCnt = 0;
(function deviceCheck(){
if(!device || dcCnt +=1 >= 25){
if(dcCnt >=25){
alert('device object load timed out');
return false;
}
else {
alert('device loaded after deviceready');
return true;
}
setTimeout( deviceCheck, 200);
}
});
是的,是的,很明显if(!device dcCnt+=1 || dcCnt += 1 >= 25)
这将是一个问题。这个怪物的原始版本只是在它后面加上 () 括号来设置整个事情。这只是调试代码来尝试解决由于某种原因我没有获取设备对象的问题(最终结果证明是 if 语句中的提升 var - 我应该更清楚)。在我进行了一次调整之后,它似乎不起作用,我只是为了稍后再调查它而杀死了动作括号。
但事情就是这样。尽管从未被调用过,但这段代码在没有被注释掉的情况下,将整个 JS 文件变成了 iOS 中的一个巨大的黑洞,从那里没有返回 uh... 可以返回。我可以在链接文件之前和之后触发脚本。但是没有警报在开始或结束时起作用。Try/Catch 语句完全没有做任何事情。就像整个文件消失了一样。
当然,Android 运行良好。'use strict' 正在发挥作用,但它似乎对 ios 或 android 无关紧要。如果您不尝试启动它,它也可以在 Chrome 中正常工作。那么到底发生了什么?