0

叹...

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 中正常工作。那么到底发生了什么?

4

1 回答 1

1

我假设 WebKit 无法解析 js 文件,很可能是由于没有正确注释掉某些内容。

将其放入 iOS 模拟器并在模拟器上运行 Safari 的 Web Inspector。您可能会看到 js 语法错误。

至于为什么它在 Android 而不是 iOS 上运行......我猜有些浏览器比其他浏览器更挑剔。

于 2013-10-17T23:42:07.047 回答