我有一个问题!今天我正在 Objective C 中开发一个应用程序,它与 javascript 对话,它看起来像这样。
我有一个 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 上下文吗?
最佳答案
理论上使用 JSContext 没有问题,但是执行下载的脚本就有问题。但是,这取决于谁将在 Apple 审核流程中审核您的应用程序。我不知道如何通过另一种方式将对象传递给 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接收到重定向时,将分派(dispatch)webView委托(delegate)shouldStartLoadWithRequest,然后从请求url获取参数并中断加载返回错误
//webview delegate
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
要了解更多信息,您可以阅读以下链接:
- http://www.itexico.com/blog/bid/101540/Introduction-to-JavaScriptCore-Framework-in-iOS-Development
- http://perrymitchell.net/article/communication-between-javascript-ios-using-uiwebview-base64/
我希望这可以帮助你。祝你好运。
关于javascript - 将类对象传递给 javascript 上下文 Objective-C ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32609199/