我有个问题!今天,我正在目标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]];
一切正常,但是Apple拒绝了我的应用程序,因为我使用了JSContext。
那么还有另一种将对象传递给javascript上下文的方法吗?
最佳答案
从理论上讲,使用JSContext不会有问题,但是执行下载的脚本会有问题。但是,取决于谁将在Apple Review流程中审查您的App。我不知道如何将对象传递给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;
有关更多信息,您可以阅读以下链接:
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/