javascript - 将类对象传递给 javascript 上下文 Objective-C

标签 javascript ios objective-c uiwebview

我有一个问题!今天我正在 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;

要了解更多信息,您可以阅读以下链接:

我希望这可以帮助你。祝你好运。

关于javascript - 将类对象传递给 javascript 上下文 Objective-C ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32609199/

相关文章:

javascript - 如何将 "nd","rd", "th"的日期转换为 yyyy-mm-dd 格式的 Javasciript

ios - XCTestCase - iOS UI 测试 - 处理具有多个单元格的 UITableViews

objective-c - 将 CAMediaTimingFunction 与基于 block 的 UIView 动画一起使用

iphone - 通过 ASIHTTPRequest 传递数组 - POST

javascript - 如何通过函数传递对对象的引用?

javascript - 在 Node 中生成随机 32 位数字

javascript - 从字符串中删除第一个和最后一个 <br/>

iphone - 指向整数转换的不兼容指针将 'void *' 发送到类型为 'NSJSONReadingOptions' 的参数

ios - 未显示iOS自动续订订阅免费试用版

iOS 多部分表单请求失败,尝试从对象 [1] 插入 nil 对象