UIWebview javascript仅在发布版本中失败

时间:2013-08-19 03:07:50

标签: javascript ios objective-c uiwebview

我正在尝试手动将我的Backbone应用程序的javascript注入UIWebview(以便在应用程序启动时保存客户端免于下载1MB的JS文件)。

下面的代码在应用程序的DEBUG版本中运行得非常好,但只要构建Ad Hoc版本构建并测试它,应用程序就无法正确加载。我认为这是一个JS错误,但我不知道如何调试在发布版本中运行的UIWebview(Safari开发工具只能在Debug中工作)。

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    // Inject the JS
    NSLog(@"Injecting JS 1 from disk");
    NSString *path = [[NSBundle mainBundle] pathForResource:@"backbone_application" ofType:@"js"];
    NSString *code = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    NSString *jsCode = [NSString stringWithFormat:@"var script=document.createElement('script'); script.type='text/javascript'; script.text=\"%@\"; document.head.appendChild(script);", code];
    [self.webPortal stringByEvaluatingJavaScriptFromString:jsCode]
}

有关为什么在RELEASE模式下失败的任何想法? 有关如何在发布版本中测试UIWebview javascript错误的任何建议吗?

3 个答案:

答案 0 :(得分:1)

每个构建模式的代码的项目和目标都有设置​​。听起来你有一个或多个DEBUG模式的设置与RELASE模式不同。仔细检查以查看是否有任何设置不同,其他方式证明这是在DEBUG模式下创建Ad Hoc分发存档(您可以在Scheme Editing Dialog上编辑它。)如果这个新的.IPA按预期运行那么肯定你有不同的DEBUG / RELEASE设置。

希望这有帮助,

答案 1 :(得分:1)

答案 2 :(得分:1)

尝试删除以下行:

NSString *jsCode = [NSString stringWithFormat:@"var script=document.createElement('script'); script.type='text/javascript'; script.text=\"%@\"; document.head.appendChild(script);", code];

所以你会有这个:

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    // Inject the JS
    NSLog(@"Injecting JS 1 from disk");
    NSString *path = [[NSBundle mainBundle] pathForResource:@"backbone_application" ofType:@"js"];
    NSString *code = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    [self.webPortal stringByEvaluatingJavaScriptFromString:code]
}