2015-09-16 34 views
1

我有一個問題!今天,我正在開發一個應用程序在目標C與JavaScript對話框,它看起來像這樣。通行證類對象的JavaScript上下文目標C

我有一個UIWebView,我檢索與JSContext的背景和我傳遞一個對象上下文:

JSContext *context = [self valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; // Undocumented access 
context[@"classNameInJS"] = [[objCClass alloc] init]; 
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/page.html", path]]; 
[webView loadRequest:[NSURLRequest requestWithURL:url]]; 

一切工作正常,但蘋果拒絕我的申請,因爲我使用JSContext。 那麼,有沒有另一種方式將對象傳遞給JavaScript方面?

回答

0

theorically使用JSContext不要有問題,而是執行一個下載腳本了。但是,取決於誰在Apple Review流程中審查您的應用程序。我不知道如何通過一個對象傳遞給JavaScript上下文。 (Objective-C < - > javascript)我將函數調用到objective-c中的javascript,我做了一個從javascript到objective-c的重定向。

//to call a javascript function from objective-c 
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"javascriptFunction('%@')", parameter]]; 

從javscript接收回調,我認爲唯一的辦法就是與重定向傳遞參數的URL,當一個UIWebView接收重定向,被分派webView的委託shouldStartLoadWithRequest,那麼你從請求URL的參數並中斷負載返回false

//webview delegate 
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; 

要了解更多信息,可以閱讀鏈接:

我希望這可以幫助你。祝你好運。