2013-08-19 14 views
1

我試圖手動進我的主幹應用到一個UIWebView的JavaScript(爲了從下載1MB JS文件的應用啓動時保存客戶端)。UIWebView中的javascript只發行失敗的建立

下面的代碼工作完全正常的調試版本的應用程序,但只要建立一個特設發佈版本和測試出來,應用程序不能正常加載。我認爲這是一個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] 
} 

上爲什麼會在釋放模式沒有任何想法? 任何關於如何在發佈版本中測試UIWebview javascript錯誤的建議?

回答

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

上有項目,你的每一個的構建模式代碼的目標都設定。在我看來,您有一個或多個DEBUG模式的設置與RELASE模式不同。看仔細檢查,如果任何設置不同的是,其他的方式來證明這是爲在調試模式(您可以編輯您Scheme Editing Dialog。)特設分佈創建存檔如果運行作爲然後預期確定你有這個新的.ipa不同的DEBUG/RELEASE設置。

希望這有助於

+1

我想兩兩件事至今:1)設置運行應用程序的構建配置發佈,但我得到一個Xcode錯誤:「無法啓動'MyApp';未能獲得進程4910的任務」; 2)將檔案的構建配置設置爲調試,並通過iTunes在設備上創建和安裝IPA文件。它開始安裝,然後彈出「iTunes Sync:'MyApp'安裝失敗。」所以運行'相反'的構建配置似乎是不可能的。 –

+0

聽到這個很難過。爲了更好地理解可能存在的問題,你說它在DEBUG構建中運行良好。你如何測試它?用模擬器還是直接用設備?然後你正在用RELEASE模式生成一個.IPA,當試圖通過iTunes在同一個設備上安裝它失敗時,應用程序是否運行,但似乎不加載JS,或者根本不工作? – CoderPug

+0

感謝您的快速回復!是的,它在調試版本中運行良好。我的意思是,在應用程序啓動時,我加載主頁(其中不包括任何JS),在負載完成後,我注入JS(包括JS庫+我們自己的函數,等等),然後調用應用程序。 start()啓動骨幹應用程序。這一切都在開發中。當我在釋放模式下生成.IPA並通過iTunes安裝時,我通常運行應用程序,它執行相同的操作(加載頁面,注入JS,並調用App.start()),但沒有任何反應。由於它是一個發佈版本,我無法調試JS。 –