1

バックボーン アプリの JavaScript を UIWebview に手動で挿入しようとしています (アプリの起動時にクライアントが 1 MB の JS ファイルをダウンロードするのを防ぐため)。

以下のコードは、アプリの DEBUG ビルドでは問題なく動作しますが、アドホック リリース ビルドをビルドしてテストするとすぐに、アプリが正しく読み込まれません。どこかの JS エラーだと思いますが、リリース ビルドで実行されている UIWebview をデバッグする方法がわかりません (Safari 開発ツールは、私が知る限り、デバッグでのみ機能します)。

- (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 エラーをテストする方法について何か提案はありますか?

4

3 に答える 3

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]
}
于 2013-08-25T03:08:08.100 に答える