我有个问题!今天,我正在目标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/

10-11 22:23
查看更多