从 javascript 调用 Objective-C 方法

2023-12-07

我制作任何 webView 并且我想从 javascript 调用任何返回任何参数的目标 c 方法。我尝试了很多方法但不允许。 Objective C 方法在这里:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL *URL = [request URL];
    if ([[URL scheme] isEqualToString:@"donordialog"])
    {
        // now we need to figure out the function part
        NSString *functionString = [URL resourceSpecifier];

        if ([functionString hasPrefix:@"bloodTypeChanged"])
        {
            // the blood type has changed, now do something about it.
            NSString *parameter = [functionString stringByReplacingOccurrencesOfString:@"bloodTypeChanged" withString:@""];

            // remove the '(' and then the ')'
            parameter = [parameter stringByReplacingOccurrencesOfString:@"(" withString:@""];
            parameter = [parameter stringByReplacingOccurrencesOfString:@")" withString:@""];

            // log the paramter, as I don't know what to do with it right now
            UIAlertView *alert=[[ UIAlertView alloc] initWithTitle:@"iosdan javascripti"
                                                                           message:@"ddddddddd"
                                                                    delegate:nil
                                                                cancelButtonTitle:@"OK"
                                                               otherButtonTitles:nil];

            [alert show];
            //NSLog(@"%@", parameter);
        }

        return NO;
    }

    return YES;
}

javascript:

function myFunction() {
    url="http://example.com";
    window.location="donordialog:blooTypeChanged("+url+")";
}

html:

<button onclick="myFunction()">click me</button>

评论:我需要:例如,它是 obj c 方法。啊啊{}。我的 aaa 方法必须返回任何参数。我有 wevView。我将任何网址加载到此 webView:例如 www.example.com/forios 。我需要从 javascript 调用这个 (aaa) 方法,它位于 www.example.com/forios 上的 html 中,并提醒 aaa 函数的结果。理解?。如果明白,就不要看我的代码。无论如何,请帮助自己取悦自己。 我的问题的android版本:通过 Android WebView 从 JavaScript 调用 Java 函数我想提醒一些从方法返回的参数。请帮助。谢谢。


这是一个快速简单的解决方案withoutJavaScriptCore 向后兼容(可能会考虑升级到 Javascriptcore )。这是一个简单的实现。

注意:此解决方案仅适用于 UIwebview(不适用于 UIscrollview)

//视图控制器.h

@interface ViewController : UIViewController<UIWebViewDelegate>

@property (strong, nonatomic) IBOutlet UIWebView *viewWeb;
@end

//视图控制器.m

- (void)viewDidLoad
{
    [super viewDidLoad];


    NSString *fullURL = @"http:player.fusion.fm";
    NSURL *url = [NSURL URLWithString:fullURL];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [_viewWeb loadRequest:requestObj];
   _viewWeb.delegate = self;
 }

 -(BOOL)webView:(UIWebView *)_viewWeb shouldStartLoadWithRequest:(NSURLRequest *)request   navigationType:(UIWebViewNavigationType)navigationType {
    NSURL *url = request.URL;
    if ([[url scheme] isEqualToString:@"ios"])
    {
        [self mute]; // <-- YOUR OBJ-C FUNCTION HERE
        NSLog(@"test");
        return YES;
    }else
     {
        return YES;
    }

 }

// Javascript(在 webview 中)

try
{
  window.location="ios://null"
}
catch(err)
{
}

Source: http://adoptioncurve.net/archives/2012/09/calling-objective-c-methods-from-javascript-in-a-uiwebview/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 javascript 调用 Objective-C 方法 的相关文章

  • 如何抑制窗口鼠标滚轮滚动...?

    我正在开发嵌入页面中的画布应用程序 我有它 因此您可以使用鼠标滚轮放大绘图 但不幸的是 这会滚动页面 因为它是文章的一部分 当我在 dom 元素上滚动鼠标滚轮时 是否可以阻止鼠标滚轮在窗口上滚动 附加鼠标滚轮 不是 Gecko DOMMou
  • 可以使用 jQuery 或 Javascript 将图片的特定部分用作链接吗?

    我有这个想法 将图片 而不是文本 的各个部分链接到不同的页面或网站 并且我想在不实际创建不同的照片并将它们彼此靠近的情况下完成 这样看起来就像是一张完整的图片 这里有人知道如何使用 JavaScript 的变体 例如 jQuery 或纯 J
  • Javascript正则表达式用于字母字符和空格? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我需要一个
  • JavaScript 重定向到新窗口

    我有以下代码 它根据下拉列表的值重定向到页面 我如何使其在新窗口中打开 function goto form var index form select selectedIndex if form select options index
  • 在requestAnimationFrame中使用clearRect不显示动画

    我正在尝试在 HTML5 画布上做一个简单的 javascript 动画 现在我的画布是分层的 这样当我收到鼠标事件时 背景层不会改变 但带有头像的顶层会移动 如果我使用 requestAnimationFrame 并且不清除屏幕 我会看到
  • 将div设置为隐藏,延时后可见

    我试图在 X 时间后 也许甚至在随机时间之后 但现在我们只做固定时间 在黑色背景上出现一个黄色方块 function initialSetup if document getElementById yellow null document
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • 通过 CDN 使用 Dojo 时如何加载自定义 AMD 模块?

    我正在使用 google 的 CDN 并尝试使用他们的加载程序加载我自己的 AMD 模块 我知道我做错了什么 但我被困住了 有任何想法吗
  • Firefox 书签探索未超过 Javascript 的第一级

    我已经编写了一些代码来探索我的 Firefox 书签 但我只获得了第一级书签 即我没有获得文件夹中的链接 e g 搜索引擎 雅虎网站 谷歌网站 在此示例中 我只能访问 Search engines 和 google com 不能访问 yah
  • 如何解决 Xcode 5 中的红色(已移动)文件?

    在 Xcode 4 中 当您要移动文件时 可以通过单击右侧菜单中的按钮并通过 Finder 选择新位置来解析文件的新位置 在 Xcode 5 中 右侧菜单中没有按钮 我还没有找到任何方法通过右键单击文件或顶部菜单栏选项来指定文件的新位置 在
  • 提交表单并重定向页面

    我在 SO 上看到了很多与此相关的其他问题 但没有一个对我有用 我正在尝试提交POST表单 然后将用户重定向到另一个页面 但我无法同时实现这两种情况 我可以获取重定向或帖子 但不能同时获取两者 这是我现在所拥有的
  • HTML 离线应用程序缓存,列出下载的文件

    作为我正在构建的离线 Web 应用程序的加载屏幕的一部分 使用缓存清单 http developer apple com library safari documentation iPhone Conceptual SafariJSData
  • FireFox 中的自动滚动

    我的应用程序是实时聊天 我有一个 Div 来包装消息 每条消息都是一个 div 所以 在几条消息之后 我的 DOM 看起来像这样 div div Message number two div div div div
  • 处理 UICollectionView 中的点击手势

    由于我无法使用任何框架来创建相册 因此我尝试使用 Collection View 创建自己的相册 但我一开始就陷入困境 我的目标是将网络服务中的所有图像显示到我的集合视图中 因为所有图像都已显示 下一步是当有人点击任何单元格时 我可以在新视
  • 模态转场需要点击 2 次而不是 1 次

    我的 UITableView 需要点击 2 次才能显示所选单元格的详细信息页面 一次用于选择 另一次用于显示详细信息视图 我希望有一个 CLI 直接显示所单击单元格的详细视图 我在 UITableViewManager m 中使用此方法的模
  • Javascript 纪元时间(以天为单位)

    我需要以天为单位的纪元时间 迄今为止 我已经看到过有关如何翻译它的帖子 但几天后就没有了 我对纪元时间很不好 我怎么能得到这个 我需要以天为单位的纪元时间 我将解释为您想要自纪元以来的天数 纪元本身是第 0 天 或第 1 天的开始 无论您如
  • Safari 支持 JavaScript window.onerror 吗?

    我有一个附加到 window onerror 的函数 window onerror function errorMsg url line window alert asdf 这在 firefox chrome 和 IE 中工作正常 但在 s
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • fullCalendar 未显示正确的结束日期

    我正在看调试页面 http jsbin com wukofacaxu edit js outputFullCalendar 官方网站的 我想安排一个活动时间为 22 09 2015 至 30 09 2015 dd mm yyyy 但它只显示
  • 隐藏选项卡栏项目并对齐其他选项卡项目

    在我的应用程序中 我有 4 个选项卡栏项目 我正在 XIB 文件中添加这 4 个选项卡栏项目 最初我必须显示 3 个选项卡栏项目 同步后我必须在我的应用程序中显示第 4 个选项卡栏项目 因此 为此 我使用以下代码隐藏第四个选项卡栏项目 se

随机推荐

  • 将 Android 搜索栏与拇指对齐

    我试图将搜索栏与视图顶部对齐 但无法用拇指将其居中 是否有某种带有RelativeLayout 子项的 alignCenter 这是我的 xml 代码示例
  • 由于 SunCertPathBuilderException:找不到证书,无法在 Eclipse 中连接到 GitHub

    我已经使用 Eclipse EE Luna 设置了我的 mac 一切似乎都工作正常 来自 Windows 我安装了 EGit 和 Github Mylin 插件 但是 我似乎无法在 Eclipse 中克隆 github 项目 当通过 EGi
  • 在Java Maven项目中通过Spark查询Cassandra中的数据

    我正在尝试编写一个简单的代码 在其中创建一个架构 插入一些表 然后提取一些信息并将其打印出来 但是 我收到错误 我正在使用 Datastax cassandra Spark 连接器 我一直在使用这两个例子来帮助我尝试实现这一目标 https
  • 根据变量范围过滤数据透视表

    我的目标是使用另一张工作表中的范围来过滤数据透视表 该范围从第三张表中提取数据 这是启动大量公式并在每次使用时发生变化的数据转储 我有下面的代码 但我可以看到它所做的是运行每个数据透视表字段 将其与范围进行比较 然后删除过滤器 我有 32
  • 如何使用固定点旋转 UIIMageVIew?

    我想按角度旋转图像 但是我想用固定点旋转图像 如何设置这个固定点 设置视图图层的锚点 该锚点位于视图局部坐标中 范围为 0 到 1 即左上角为 0 0 右下角为 1 1 例如 默认是绕中心旋转 imageView layer anchorP
  • 错误:运行 docker 容器时无法访问 jarfile

    尝试运行 docker 容器时出现以下错误 Error Unable to access jarfile 我的 Dockerfile 是这样的 FROM ubuntu 16 04 Install Updates RUN apt get up
  • 如何缓存 IQueryable 对象?

    我有这个方法 它返回 UserStatus 表中所有行的 Linq to SQL 查询 public IQueryable
  • 确定 ABAP 中的活动格式设置

    As the 格式化设置的ABAP文档解释 格式设置设置如下 在内部会议开始时 他们是由相关默认设置决定当前用户的用户主记录中的固定值 使用语句 SET COUNTRY 这是当前内部会话的默认设置可以使用特定于国家 地区的格式进行覆盖 但作
  • R - 当我绘制 xts 和 Zoo 对象时如何更改日期格式?

    我想知道如何更改日期格式 我正在处理的代码如下 library quantmod getSymbols AAPL price AAPL lt AAPL 6 plot price AAPL main The price of AAPL 这个结
  • 接收者未注册

    我有一个带有异步任务的程序和一个广播接收器来发送结果代码 以便 Asynctask 知道应用程序正在工作 但它崩溃了 说接收者在主要活动中未注册 我在主活动中注册了一个接收器 另一个接收器在 AsyncTask 活动中注册 所以这里是代码和
  • 从链接 Google Map API 中提取坐标

    有没有办法使用这种类型的谷歌地图链接检索纬度和经度 https goo gl maps 7jNqZtPa5Cjf333k7 在这个网址中7jNqZtPa5Cjf333k7不是指地点ID吗 我真的很难使用这种类型的链接来提取纬度和经度 如果有
  • 自 2022 年 10 月 VS-Code 更新(版本 1.73)起安装的新 isort 扩展出现问题

    我在 Windows 10 Pro Build 10 0 19045 上使用 VS Code 版本 1 73 1 带有 MS Python 扩展 v2022 18 2 安装 VS Code 2022 年 10 月更新后 在编写 Python
  • 将多行字符串中的指定列转换为单个逗号分隔行

    假设我有以下字符串 something1 12 0 some unnecessary trailing data this must go something2 15 5 some more unnecessary trailing dat
  • 导出带有资源的 jar

    我正在尝试通过构建许多小型模块化项目来构建大型 Java 项目 我希望每个小项目都是完全独立的 拥有其所有资源 例如图像 我正在使用 Eclipse 如果我配置构建路径来添加模块化项目之一 资源引用将不起作用 该系统找不到指定的文件 如果我
  • 如何让 Git 不列出修改过的更改?

    Git status 会给我已更改的文件列表 其中我有一些已更改但我不想提交 只需将其保留在工作目录中即可 令人烦恼的是 在提交之前 如果有新的更改 我必须扫描这些文件的差异 或者这些修改只是我知道的并且不想提交的修改 有没有办法告诉 Gi
  • JavaScript 读取文件内容

    如果您有新文档的 url 如何使用 javascript 从不是您所在页面的文档中检索数据 我想做的是创建一个页面 其中有一个用于提供本地文件名的文本字段和一个从所提供的文档中检索单词的按钮 thanks HTML5 有一个文件 API 可
  • 从资源中排除属性文件

    如何从 src main resources 中排除文件 例如 我在那里有一个名为 map 的文件夹 我想保留它 并且我想删除 war 中的所有内容 或者不首先将其打包到里面 或者替代但结果相同 从 src main resources 中
  • asp.net web 配置错误

    我的 ASP NET 项目仍然有问题 在 Visual Studio 中 当我开始调试时 一切正常并且页面正常工作 但是 当我在 iis7 上尝试时 会显示此错误 显示错误 配置错误描述 处理服务此请求所需的配置文件期间发生错误 请查看下面
  • C#:HttpListener 提供内容时出错

    我已经实现了类似的东西this唯一真正的区别是 string filename context Request RawUrl Replace Remove 0 1 string path Uri UnescapeDataString Pat
  • 从 javascript 调用 Objective-C 方法

    我制作任何 webView 并且我想从 javascript 调用任何返回任何参数的目标 c 方法 我尝试了很多方法但不允许 Objective C 方法在这里 BOOL webView UIWebView webView shouldSt