objective-c与javascript的通信

Objective-C与JavaScript的相互调用及参数传递注意事项 通过WebView的JavaScript交互接口,可以在Objective-C中调用JavaScript函数,并获取返回值;在Objective-C中调用JavaScript函数的一种常见场景是在WebView中执行JavaScript代码。参数编码:由于Objective-C和JavaScript使用不同的编码规则,为了确保参数传递的准确性,需要进行适当的编码和解码操作。异步通信:由于Objective-C和JavaScript运行在不同的线程中,因此在进行跨语言调用时,可能涉及到异步通信的问题。 阅读详情

iOS开发之Objective-C与JavaScript交互操作是本文要介绍的内容,主要主要是讲解了stringByEvaluatingJavaScriptFromString的用法,它的功能非常的强大,用起来非常简单,通过它我们可以很方便的操作uiwebview中的页面元素。

UIWebView是iOS最常用的8SDK之一,它有一个stringByEvaluatingJavaScriptFromString方法可以将javascript嵌入页面中,通过这个方法我们可以在iOS中与UIWebView中的网页元素交互。

  1. stringByEvaluatingJavaScriptFromString 

使用stringByEvaluatingJavaScriptFromString方法,需要等UIWebView中的页面加载完成之后去调用。我们在界面上拖放一个UIWebView控件。在Load中将google mobile加载到这个控件中,代码如下:

  1. - (void)viewDidLoad  
  2. {      
  3. [super viewDidLoad];     
  4. webview.backgroundColor = [UIColor clearColor];        
  5. webview.scalesPageToFit =YES;     
  6.  webview.delegate =self;      
  7.  NSURL *url =[[NSURL alloc]   
  8.  initWithString:@"http://www.google.com.hk/m?gl=CN&hl=zh_CN&source=ihp"];      
  9.  NSURLRequest *request =  [[NSURLRequest alloc] initWithURL:url];      
  10.  [webview loadRequest:request];  
  11.  } 

我们在webViewDidFinishLoad方法中就可以通过javascript操作界面元素了。

1、获取当前页面的url。

  1. - (void)webViewDidFinishLoad:(UIWebView *)webView {      
  2. NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];  
  3. } 

2、获取页面title:

  1. - (void)webViewDidFinishLoad:(UIWebView *)webView {       
  2. NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];     
  3. NSString *title = [webview stringByEvaluatingJavaScriptFromString:@"document.title"];  
  4. } 

3、修改界面元素的值。

  1. NSString *js_result = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('q')[0].value='朱祁林';"]; 

4、表单提交:

  1. NSString *js_result2 = [webView stringByEvaluatingJavaScriptFromString:@"document.forms[0].submit(); "]; 

这样就实现了在google搜索关键字:“朱祁林”的功能。

5、插入js代码

上面的功能我们可以封装到一个js函数中,将这个函数插入到页面上执行,代码如下:

  1. [webView stringByEvaluatingJavaScriptFromString:@"var script = document.createElement('script');"     
  2. "script.type = 'text/javascript';"            
  3.  "script.text = \"function myFunction() { "            
  4.   "var field = document.getElementsByName('q')[0];"             
  5.   "field.value='朱祁林';"            
  6.    "document.forms[0].submit();"   
  7.   "}  
  8.        \";"     
  9.     "document.getElementsByTagName('head')[0].appendChild(script);  
  10.   "];    
  11.  [webView stringByEvaluatingJavaScriptFromString:@"myFunction();"  
  12. ];   

看上面的代码:

a、首先通过js创建一个script的标签,type为'text/javascript'。

b、然后在这个标签中插入一段字符串,这段字符串就是一个函数:myFunction,这个函数实现google自动搜索关键字的功能。

c、然后使用stringByEvaluatingJavaScriptFromString执行myFunction函数。


无忧无虑bt影视在线小偷 v3.0 5156无忧无虑影视在线小偷程序4dzz完全开源版,开源全自动免更新,2011.12.30更新全站程序为开源版,代码完全公开,可以学习交流使用。 以前有个版本是加了密的,建议大家缓换成现在的开源的,开源的方便了大家的修改,也可以从中学习怎样写小偷程序。无任何加密设置,可以自由修改。 无忧无虑bt影视在线小偷程序,全自动免更新 免费开源版,完全开源,可以随意修改 因为这个东东以前(前两个多月)是收费的,哎,不管它了,提供下载了。速度不错,资源丰富,可以在线播放,但是都是qvod的电影,要用到qvod播放器才行。 毕竟是bt下载站的老大,资源更新快是肯定的。 界面嘛,一般般,最古董级的界面。一看就是做电影的 关于广告位的说明: 注意:以下所有的代码都要转换为相应的js代码方可使用! 立即下载

相关推荐

无忧无虑影视网小偷程序源码 v1.05.rar

5156影视小偷程序源码|影视小偷|影视源码|小偷源码|免更新|全自动 可维护,可修改,全自动,无需人工参与,只需设置广告即可永久使用。不用手动更新。

JavaScriptCore和Objective-C

在iOS开发中,因为H5页面的一些先天优势,原生界面里面掺杂着H5页面是一种很常见的方案。公司应用最近因为业务需要一下子接入了大量H5界面,另外还要求:原生界面使用的是友盟统计分析,为了统计数据能在平台连续、集中的展示出来,希望H5页面的统计事件和原生界面的统计事件都上报到同一个后台。为了满足这个要求,就需要H5页面使用友盟统计的iOS SDK来上报用户事件,也就是说,H5页面需要与原生应用进行交

努力,可能成功!放弃,注定失败! 7939

5156影视小偷程序假伪静态版 v1.0

5156影视小偷程序无后台,也不需要后台;不可对程序进行破解,否则会使程序出错;无需管理,自动更新影视内容;提供多个广告位,下面会对每个广告位进行说明。关于广告位的说明:注意:以下所有的代码都要转换为相应的js代码方可使用!不会转换的请去 http://www.4dzz.com/html2js.htm 进行傻瓜式转换51foot.js  全局统计代码放置t.js  首页底部友情链接上部的广告位1pf.js 首页底部友情链接上部的广告位251banner.js  全局头部广告位760.js   全局 搜索下方960*80广告位1head.js   全局 搜索下方960*80广告位2movie.js   影片详细信息浏览页图片右侧广告位m730.js   影片详细信息浏览页播放按钮 下方 广告位51load.js 播放页宽幅广告51player.js  播放页底部说明广告位对程序有任何问题,请到论坛留言!论坛提供有真伪静态版,请关注。版权所有4dzz小偷采集程序免费发布中心

Objective-c与js相互调用

一 objective-c调用js NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"]; //注: webView是UIWebView

ikmb的专栏 6608

STM32实现webserver显示数据及配置参数

其实提到的将fsdata.c重命名为fsdata_custom.c,可以不重命令,将/LWIP/Target/lwipopts.h中HTTPD_USE_CUSTOM_FSDATA 定义为0,这样HTTPD_FSDATA_FILE将使用fsdata.c,避免每次生成fsdata.c需要重命令的麻烦。2、登录成功后,板卡根据板卡配置类型,返回对应的数据页面,该页面可实现数据校准、清零,以及进行到板卡参数设置页面。目前还未实现post功能以及http身份验证功能。3、板卡参数设置页面。

2694

AI 大模型在电商精准营销中的应用

例如,对于用户 A 和用户 B,通过比较他们对共同评价过的商品的评分差异来确定相似度。其中,(Gain(D,a))表示特征(a)对数据集(D)的信息增益,(Ent(D))表示数据集(D)的信息熵,(V)表示特征(a)的取值个数,(D^{v})表示特征(a)取值为(v)的样本子集。其中,(sim(A,B))表示用户 A 和用户 B 的相似度,(I)表示用户 A 和用户 B 共同评价过的商品集合,(R_{A,i})和(R_{B,i})分别表示用户 A 和用户 B 对商品(i)的评分。(三)营销活动效果预测。

alittlehippo的博客 1627

iOS中Objective-C与JavaScript之间相互调用的实现(实现了与Android相同的机制)

最近在iOS项目中需要使用到oc与js之间的相互调用,而且要求是实现方式必须与Android中的相同,方便js中统一处理。于是在对第三方库WebViewJavascriptBridge进行研究之后,仿照Android中的WebView与JS的交互机制,实现了一个,在这里分享给大家。 首先要说明的是,在iOS中js调用Objective-C的代码只能通过重定向的形式进行,即js中通过修改ifram

心砚THU的专栏 1万+

MRI脑影像分析从哲学到技术:一文搞懂VBM预处理基本原理(全网最详细解析)

   分析大脑解剖学差异最常用方法之一是基于体素的形态学方法(voxel-based morphometry, VBM)。 VBM的基本思想是测量大脑组织,尤其是灰质的局部浓度的差异。在大脑的每个体素处进行操作,然后在两个或多个实验组之间进行统计比较,从而在受调查的组之间建立特定大脑区域中脑组织浓度的统计学显着差异。 VBM分析基于(高分辨率)MRI脑部扫描,涉及大量处理步骤,主要是空间归一化,分割,平滑和统计分析,最终结果是统计图,显示了各组之间组织类型明显不同的区域[^1]。 参考 [^1] ..

意疏的学习笔记 3万+

iOS开发笔记 - Objective-C和JavaScript的混编

最近看了一个对Github上面编程语言使用统计的排行榜,JavaScript真可以说是一枝独秀,很难想象20年前,这个语言只是浏览器中的装饰性语言,能做的事情也就是一点特效或者检查一下要提交给服务器的表单是否满足要求。今天的JavaScript已经是一个全栈语言,从客户端到服务器无所不在。很多编程语言都提供了跟JavaScript进行交互的接口,这一点在iOS开发中也不例外。

骆昊的技术专栏 7955

6.3 节深度拆解:Hermes Agent 多 Agent 协同执行链路的 4 层设计逻辑

拆解 Hermes 多 Agent 协同的 4 层工程化设计(协议层、编排层、执行层、适配层),聚焦协议层的强约束消息 Schema 如何解决 Agent 间语义不一致问题,并提供 `soul.md` 配置、GLM-4.7Flash 结构化输出验证及 v0.13.0/v0.14.0 版本实操避坑指南

weixin_42520239的博客 122

【Bluetooth|蓝牙开发】二、蓝牙开发入门

蓝牙,是一种利用低功率无线电,支持设备短距离通信的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换,蓝牙工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段,使用IEEE802.11协议。

Donge's Blog 1万+

Objective-c和javascript通信

1、github上下载该库,地址:https://github.com/marcuswestin/WebViewJavascriptBridge 2、项目中引入该库,步骤项目github有写。 3、简单配置:[WebViewJavascriptBridge enableLogging]; 4、oc中初始化: self.bridge = [WebViewJ...

dasongbo7290的博客 132

I2C通信——时序图

本文用逻辑分析仪抓取主机I2C通信的时序图,抓取的过程是读某个寄存器的值。

weixin_43772611的博客 7355

UIWebView 中 JS 与 Objective-C 通信

JavaScript -> Objective-C URL请求截获 在UIWebView的浏览器的JavaScript中, 没有相关的接口可以调用Objective-C的相 关方法. 一般采用JavaScript 在浏览器环境中发出URL请求, Objective-C 截获请 求以获取相关请求的思路. 在Objective-C 中在实现UIWebViewDelegate 时截获请求:

MGY_my的博客 831

下采样新突破!ADown模块让YOLOv11多尺度特征提取更精准

ADown 凭借可编程梯度信息与多分支特征聚合的创新设计,打破了传统下采样在特征保留上的固有局限。本教程从原理到代码实现,再到工业场景适配,完整呈现了其在 YOLOv11 中的集成路径。只需简单新增模块脚本并修改配置文件,你的目标检测模型就能在多尺度特征捕捉能力上实现跨越式提升——无论是学术研究中的小目标检测突破,还是工业场景下的复杂多尺度任务落地,ADown 都能成为你攻克下采样瓶颈的利器。现在就动手尝试,让你的检测模型在下一代下采样技术的创新中再上一个台阶吧。

know_F0727的博客 524

C# 零基础入门知识点汇总

本文属于C#零基础入门之百识百例系列目录文章。此系列文章已经完结,欢迎大家点击文中文章链接查看详情进行学习。

陈言必行 -- Unity游戏开发领域优质博主 5348

UIWebView 中JavaScript 与 Objective-C 通信

iOS7 之前 Objective-C -> JavaScript UIWebView对象有以下方法 - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script 该方法能够执行一段JavaScript字符串, 并返回字符串类型的返回值. 例如: UIWebView *webView = [[UIWeb

FuDesign2008的专栏 4016

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

JavaScript与Objective-C之间的通信

转自老谭的博客:JavaScript与Objective-C之间的通信 1、JS中变量在OC中的类型 通过OC-JS Bridge,变量的类型会自动进行转换,基本类型都会自动转换,如JS中的number、boolean都会转换成OC中的NSNumber类型,而String类型会自动转换成NSString类型,JS中的对象会转换成WebScriptObject对象

静影沉璧 598

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Objective-C与JavaScript双向通信实战:WKWebView混合开发指南

在移动与桌面应用开发中,混合开发模式结合了原生性能与Web技术灵活性,成为构建复杂应用的重要架构。其核心原理在于通过JavaScript引擎桥接原生代码与Web视图,实现跨语言调用与数据交换。这一技术价值在于能充分发挥原生系统能力与Web生态优势,提升开发效率与跨平台一致性。在macOS/iOS平台上,WKWebView与JavaScriptCore是实现Objective-C与JavaScript互调的关键框架,广泛应用于需要内嵌Web界面、调用原生硬件功能或集成脚本引擎的场景。本文聚焦于WKWebVie

weixin_30279671的博客 404

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

JavaScript 与 Objective-C 通信

iOS7 之前 Objective-C -> JavaScript UIWebView对象有以下方法 - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script 该方法能够执行一段JavaScript字符串, 并返回字符串类型的返回值. 例如: UIWebView *webView = [

xiaoyangsavvy的专栏 738

Objective-C和Javascript的通信(一)

Objective-C和Javascript的通信是通过 UIWebview,在UIWebview的代理中进行的。在IOS7以前我们通过自己制定通信的协议进行通信,但是到了IOS7以后,苹果为提供了Oc和Javascript通信的框架JavaScriptCore。这样我们操作起来就相对简单很多了。 我们首先来看看IOS7以前,Javascript是怎么和UIWebview进行通信的。①创建项目,文

jinzhongjunqianyan的专栏 559

iOS7之后JavaScript与Objective-C之间的通信

最近公司用Ping++集成了第三方支付,并且微信端也集成了这个功能,而微信付款时需要调用原生的支付宝支付或者微信支付,由此引出了JS调用OC方法的问题。 Js -> Native 以前传统的做法是根据url字符串来做特殊匹配,从而完成一些特定的工作譬如 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWi

咚咚锵咚锵咚锵 1423

Javascript与Objective-C通信方法

@protocol UIWebViewDelegate @optional - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; - (void)webV

兄弟联盟工作室的专栏 1748

Objective-C和Javascript的通信(三)

Objective-C和Javascript的通信(三) OC JS 交互 objective-c与js交互

jinzhongjunqianyan的专栏 484
上一篇: 网页设计的一些网站
下一篇: EVC4安装
shareCode
博客等级 码龄15年 125粉丝 40原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值