解决方案-JS和OC的交互(凑字数凑字数)

问题描述

JS和OC的交互(凑字数凑字数)

各位大神,你们好。
我现在想达到在JS中调用Objective-C中的方法,来传数据。
效果为只需要在JS页面添加一个对象就可以调用Objective-C的方法,其他的什么都不用。

方案1:使用javascriptcore,但是我发现它是把JS加载进context环境里面运行,而不是把值传到JS页面去,所以这个方法不行。另外,我只看到了OC调用JS方法的例子,没看到其他的例子。
方案2:是使用window对象,
//通过此回调,将self传递给JS环境

  • (void)webView:(WebView *)sender didClearWindowObject:(WebScriptObject *)windowObject forFrame:(WebFrame *)frame
    {
    [windowObject setValue:self forKey:@"native"];
    }
    这样就可以把整个类对象暴漏给JS环境了,其实质是把类对象设置成window的属性,但是不知道咋回事这个方法不好使,没法用,类型也找不着,为生命啥的。
    所以这个解决方案也失败了。

方案3:使用bridge组件,那个组件必须要在JS界面添加代码,这个是不符合要求的。

我实在是没办法了,求大神帮忙吧。
谢谢!!!

解决方案

可以参考这篇文章:http://www.cnblogs.com/yswdarren/p/3615458.html
采用iframe拦截url的方法,兼容ios和android。安全性也比较好。

时间: 2024-10-31 17:06:15

解决方案-JS和OC的交互(凑字数凑字数)的相关文章

WKWebView与Js实战(OC版)

前言 上一篇专门讲解了WKWebView相关的所有类.代理的所有API.那么本篇讲些什么呢?当然是实战了! 本篇文章教大家如何使用WKWebView去实现常用的一些API操作.当然,也会有如何与JS交互的实战. 如果还没有阅读过WKWebView精讲(OC版),请先阅读,不然有可能看不懂下面所讲的内容. 效果图 通过本篇文章,至少可以学习到: OC如何给JS注入对象及JS如何给IOS发送数据 JS调用alert.confirm.prompt时,不采用JS原生提示,而是使用iOS原生来实现 如何监

ios-用JavaScriptCore js调用OC

问题描述 用JavaScriptCore js调用OC <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>失败</title> <script type="text/javascript"> function redirectNative() { bluewhale.funT

js与flash的交互FLASH连播控制器_Flash As

该实例主要实现了js与flash的交互,运行前提是浏览器安装了flash插件! 前段时间领导提出的一个问题:能否实现多个flash的连续播放? 查了相关资料并通过自己的努力,最终实现了如下一个简单的Flash连续播放的js脚本. 该功能的实现实际上相当简单,主要是要了解js对flash控制的接口函数,知道了这些,问题的难度马上就降到了1+1=?的级别. 复制代码 代码如下: var flashs=[    "http://60.210.98.23/theater/flash/2007-07/14

word怎么看字数 word字数统计查看教程

  word怎么看字数 word字数统计查看教程 1.打开文档,在工具下的,字数统计. 2.通过点击字数统计,可以查看字数情况. 3.在WPS里面,分别在审阅和文档的信息面板里可以看到.

Ios开发之 -- js和ios的交互

==WebViewJavascriptBridge的介绍==#下载:https://github.com/marcuswestin/WebViewJavascriptBridge#关于WebViewJavascriptBridge的介绍:http://blog.csdn.net/yanghua_kobe/article/details/8209751==WebViewJavascriptBridge(在与现有的业务代码结合使用中)的小问题==*demo部分(  ExampleApp.html界面

JS脚本与服务器交互完成业务处理

目标 由于医保是目前与HIS系统唯一需要接口的业务,且由于各地区的医保接口不相同,也不相通,但是主要的业务的处理模型基本上是相通的,即都需要进行收费明细处理.为满足能够灵活的支持各种医保接口且减少我们自己的HIS系统与医保接口的强藕合,则需要对医保的业务处理进行必要的抽象建模. 但是,由于B/S系统需要考虑交互上的问题,则对这个业务的需求就需要使用JS来完成.JS有一定的面向对象的机制,但不是很全面,目前的了解应该可以采用变通的方式实现抽象. JS对象模型 1.对象图 这里,采用了类图的描述方式

直接用前台导入excel的例子,用flex实现,可调取js实现与.net交互

问题描述 在线导入excel最恼火的地方莫过于要上传excel文件到服务器再用后台代码操作,这样效率低,受网速影响,而且如果要操作导入的excel数据,至少要让数据在服务器和客户端直接来回跑3次.如果用flex操作,所有导入,编辑,修改工作都在前台完成,效率超快,体验超爽,只有最后一步把数据交互到后台,是生成的xml文本数据,远远比上传一整个实体excel文件小多,几乎感觉不到交互操作,而且本例子已经实现了excel的完美导入,无论是公式,文本,日期格式统统原样保持,特别是公式,你可以像原exe

IE6中使用position导致页面变形的解决方案(js代码)_javascript技巧

如图所示: 解决方案: 1.缩放窗体时先得到内容左边的空白宽度. $("#nav").offset().left; 得到内容区左边的空白宽度. 2.得到整个窗体的宽度(注意:桌面分辨率为基准,少了加上来). 3.用桌面分辨率的宽度-页面内容区的宽度/2,就可以得到一边多余的宽度. 4.如果得到的值跟$("#nav").offset().left;得到值不同,则可以调到两值相同. 复制代码 代码如下: var ietest=function() { if ($.bro

[js]javascript与剪贴板交互_MsSql

1.怎样操作剪贴板,从而实现复制.剪切与粘贴?同时判断剪贴板里边的数据是否是文本? if (!IsClipboardFormatAvailable(CF_TEXT))  return;  if (!OpenClipboard(hwndMain))  return;  hglb = GetClipboardData(CF_TEXT);  if (hglb != NULL)  {  lptstr = GlobalLock(hglb);  if (lptstr != NULL)  {  // Call