取消stringByEvaluatingJavaScriptFromString

时间:2012-11-06 07:40:07

标签: javascript objective-c ios

我有使用stringByEvaluatingJavaScriptFromString调用的JS,大约需要9秒才能运行,但是如果用户需要,我希望能够立即取消它。

然而,似乎整个线程被此阻止了。

我准备做任何事情以允许用户取消此操作(例如删除UIWebView)但似乎没有任何工作,因为应用程序在继续之前等待stringByEvaluatingJavaScriptFromString返回。

1 个答案:

答案 0 :(得分:0)

不确定如何取消它。为了改善用户界面,请从UIWebView stringByEvaluatingJavaScriptFromString in background

开始

尝试将JavaScript拆分为离散的执行块,并使用JavaScript计时器对它们进行管道处理,如下所示(JS代码,而不是Obj-C):

var i = 0;
var operation = function() {

    switch (i) {
    case 0:
       //do first part of code
       break;
    case 1:
       //do second part of code
       break;
    case 2:
       //do third part of code
       break;
    etc...
    }

    //prepare to execute next block
    i++;
    if (i < TOTAL_PARTS) {
        setTimeout(operation, 0);
    }
};
operation();

这将阻止您的脚本在执行时阻止用户交互。

有关详细信息,请检查该帖子UIWebView stringByEvaluatingJavaScriptFromString in background