gpt4 book ai didi

javascript - iOS JavaScript 桥

转载 作者:IT王子 更新时间:2023-10-29 02:42:06 27 4
gpt4 key购买 nike

我正在开发一个应用程序,我将在 UIWebView 中同时使用 HTML5 和 native iOS 框架。我知道我可以实现 JavaScript 和 Objective-C 之间的通信。是否有任何库可以简化这种通信的实现?我知道有几个库可以用 HTML5 和 javascript(例如 AppMobi、PhoneGap)创建 native iOS 应用程序,但我不确定是否有一个库可以帮助创建大量使用 JavaScript 的 native iOS 应用程序。我需要:

  1. 从 Objective-C 执行 JS 方法
  2. 从 JS 执行 Objective-C 方法
  3. 监听来自 Objective-C 的原生 JS 事件(例如 DOM 就绪事件)

最佳答案

有一些库,但我没有在大型项目中使用过其中任何一个,因此您可能想尝试一下:

不过,我认为这很简单,您可以自己尝试一下。当我需要这样做时,我个人正是这样做的。您还可以创建一个适合您需要的简单库。

1。从 Objective-C 执行 JS 方法

这实际上只是一行代码。

NSString *returnvalue = [webView stringByEvaluatingJavaScriptFromString:@"your javascript code string here"];

更多详情上官方UIWebView Documentation .

2。从 JS 执行 Objective-C 方法

不幸的是,这稍微复杂一些,因为 Mac OSX 上不存在允许两者之间完全通信的相同 windowScriptObject 属性(和类)。

但是,您可以轻松地从 javascript 自定义 URL 调用,例如:

window.location = yourscheme://callfunction/parameter1/parameter2?parameter3=value

然后用这个从 Objective-C 拦截它:

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *URL = [request URL];
if ([[URL scheme] isEqualToString:@"yourscheme"]) {
// parse the rest of the URL object and execute functions
}
}

这并没有像它应该的那样干净(或通过使用 windowScriptObject),但它有效。

3。监听来自 Objective-C 的原生 JS 事件(例如 DOM 就绪事件)

从上面的解释中,你看到如果你想这样做,你必须创建一些 JavaScript 代码,将它附加到你想要监视的事件并调用正确的 window.location 调用然后被拦截。

再说一次,虽然不是很干净,但它确实有效。

关于javascript - iOS JavaScript 桥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9473582/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com