Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UIWebview javascript仅在发布版本中失败_Javascript_Ios_Objective C_Uiwebview - Fatal编程技术网

UIWebview javascript仅在发布版本中失败

UIWebview javascript仅在发布版本中失败,javascript,ios,objective-c,uiwebview,Javascript,Ios,Objective C,Uiwebview,我正在尝试手动将我的主干应用程序的javascript注入UIWebview(以便在应用程序启动时避免客户端下载1MB JS文件) 下面的代码在应用程序的调试版本中工作得非常好,但一旦构建了一个临时发布版本并进行了测试,应用程序就无法正常加载。我假设这是某个地方的JS错误,但我不知道如何调试在发布版本中运行的UIWebview(据我所知,Safari开发工具只能在调试中工作) 你知道为什么在发布模式下会失败吗? 关于如何在发布版本中测试UIWebview javascript错误,有什么建议吗?

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

下面的代码在应用程序的调试版本中工作得非常好,但一旦构建了一个临时发布版本并进行了测试,应用程序就无法正常加载。我假设这是某个地方的JS错误,但我不知道如何调试在发布版本中运行的UIWebview(据我所知,Safari开发工具只能在调试中工作)

你知道为什么在发布模式下会失败吗?
关于如何在发布版本中测试UIWebview javascript错误,有什么建议吗?

对于每个构建模式,代码的项目和目标都有设置。在我看来,调试模式的一个或多个设置与RELASE模式不同。仔细检查是否有任何设置不同,证明这一点的另一种方法是在调试模式下为临时分发创建存档(您可以在计算机上编辑)。如果此新的.IPA按预期运行,则确保您有不同的调试/发布设置


希望这有帮助,

您是否尝试在调试中打开严格模式


尝试删除以下行:

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]
}

到目前为止,我尝试了两件事:1)将Run应用程序的构建配置设置为Release,但我收到一个Xcode错误:“无法启动‘MyApp’;无法获取进程4910的任务”;2) 将存档的构建配置设置为调试,并通过iTunes在设备上创建和安装IPA文件。它开始安装,然后弹出“iTunes Sync:‘MyApp’安装失败”。因此运行‘相反’的构建配置似乎是不可能的。听到这个消息很难过。为了更好地理解可能存在的问题,您说过它在调试版本上运行良好。您如何测试它?使用模拟器或直接连接到设备?。然后,您将以发布模式生成一个.IPA,当尝试通过iTunes在同一设备上安装时失败,应用程序是否运行但似乎无法加载JS或根本无法工作?感谢您的快速回复!是的,它在调试版本中运行良好。我的意思是,在应用程序启动时,我加载主页(不包括任何JS),加载完成后,我注入JS(包括JS库+我们自己的函数等),然后调用app.start()启动主干应用程序。这一切都在发展中。当我在发布模式下生成一个.IPA并通过iTunes安装时,我会正常运行该应用程序,它会做同样的事情(加载页面、注入JS并调用app.start()),但什么都不会发生。因为它是一个发布版本,所以我无法调试JS.PS,我只是一个接一个地检查了所有的构建设置,从发布版本复制了值,并在调试部分使用了它。希望发布版本中的某个值会导致问题,但运气不好。我明白了。可能导致此问题的另一个原因是调用“主干应用程序”文件的方式。请记住,文件系统区分大小写,因此请检查文件名拼写是否正确。您还可以检查资源的路径。如果您使用的是子目录,则应该使用更精确的方法,如
NSString*path=[[NSBundle mainBundle]pathForResource:@“js”inDirectory:@“directory/subdirectory”]
- (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]
}