Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从某个网页上托管的JavaScript调用Objective-C函数_Javascript_Objective C_Ios - Fatal编程技术网

从某个网页上托管的JavaScript调用Objective-C函数

从某个网页上托管的JavaScript调用Objective-C函数,javascript,objective-c,ios,Javascript,Objective C,Ios,我有一个IOS应用程序,其中有一个web浏览器 当显示此web浏览器时,它会导航到Internet上的某个页面,例如 是否可以在这个网站上放置一个javascript代码,当下载到手机上时,它会与本机应用程序通信?它可以调用Objective-C方法,或者向该应用程序的存储空间写入一些内容吗 前。 myexample.com/myios应用程序上托管的代码: function saveSomeString() { xcode.Save("somestring"); } 应该调用名为Sa

我有一个IOS应用程序,其中有一个web浏览器

当显示此web浏览器时,它会导航到Internet上的某个页面,例如

是否可以在这个网站上放置一个javascript代码,当下载到手机上时,它会与本机应用程序通信?它可以调用Objective-C方法,或者向该应用程序的存储空间写入一些内容吗

前。 myexample.com/myios应用程序上托管的代码:

function saveSomeString() {
    xcode.Save("somestring");
}

应该调用名为Save的Objective-C函数,该函数将传入的字符串参数保存到本地存储。

可以,但它有点粗糙

在Objective-C端:

基本上,在UIWebView中,您将使用方法shouldStartLoadWithRequest(来自UIWebViewDelegate),该方法在URL请求启动之前调用:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
在Javascript端:

您的javascript代码将导航到一个“假”URL,您将根据上面的方法对其进行过滤。比如:

window.location = "js2objc://save:param";
回到目标C侧:

在我前面提到的方法中,您查找关键字js2objc(或您选择的任何一个),然后提取信息并采取任何适当的操作:

if([[url scheme] isEqualToString:@"js2objc"]){
    // extract the parameters and save them, o do whatever action you need
    return NO;  // so the UIWebView doesn't actually follow the url
}

您可以在js中使用本地存储,这非常简单!看到了吗?但在使用本地存储之后,我可以通过XCode读取这些信息吗?不。我不明白您在寻找什么。@SerhatÖzgel:XCode是一种开发环境,而不是一种编程语言。所以它没有办法。你可能指的是客观C方法。我已经相应地更改了标题和标签。这应该可以了,谢谢。一旦我尝试了,我就会接受。我找到了一个教程,一步一步地描述了上面的内容。