`
ping8899
  • 浏览: 44234 次
社区版块
存档分类
最新评论
阅读更多

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

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

- (void)viewDidLoad<br>
{<br>
[super viewDidLoad];<br>
webview.backgroundColor = [UIColor clearColor]; <br>
webview.scalesPageToFit =YES;<br>
webview.delegate =self;<br>
NSURL *url =[[NSURL alloc] initWithString:@"http://www.google.com.hk/m?gl=CN&amp;hl=zh_CN&amp;source=ihp"];<br><br>
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];<br>
[webview loadRequest:request]; <br>
}

<br>

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

1、获取当前页面的url。

<textarea readonly name="code" class="plain">- (void)webViewDidFinishLoad:(UIWebView *)webView { 
   NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];</textarea><br>
2、获取页面title:

<textarea readonly name="code" class="plain"> NSString *title = [webview stringByEvaluatingJavaScriptFromString:@"document.title"];  </textarea><br>
3、修改界面元素的值。

<textarea readonly name="code" class="plain">        NSString *js_result = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('q')[0].value='朱祁林';"];</textarea><br>
4、表单提交:

<textarea readonly name="code" class="plain">        NSString *js_result2 = [webView stringByEvaluatingJavaScriptFromString:@"document.forms[0].submit(); "];</textarea><br>
这样就实现了在google搜索关键字:“朱祁林”的功能。

5、插入js代码

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

<textarea readonly name="code" class="plain">    if ([title compare: @"Google"]==NSOrderedSame ) {
 
        [webView stringByEvaluatingJavaScriptFromString:@"var script = document.createElement('script');" 
         "script.type = 'text/javascript';" 
         "script.text = \"function myFunction() { " 
         "var field = document.getElementsByName('q')[0];" 
         "field.value='朱祁林';" 
         "document.forms[0].submit();" 
         "}\";" 
         "document.getElementsByTagName('head')[0].appendChild(script);"];  
       
        [webView stringByEvaluatingJavaScriptFromString:@"myFunction();"]; 
    }</textarea><br>
看上面的代码:

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

b、然后在这个标签中插入一段字符串,这段字符串就是一个函数:<span style="font-family: Courier New;">myFunction</span>,这个函数实现google自动搜索关键字的功能。

c、然后使用<span style="font-family: Courier New;">stringByEvaluatingJavaScriptFromString执行myFunction函数。</span>

<span style="font-family: Courier New;">演示:</span>

<span style="font-family: Courier New;">第一步打开google mobile网站</span>

<span style="font-family: Courier New;"><img alt="" src="http://hi.csdn.net/attachment/201108/4/0_13124170981Cg7.gif"></span>

<span style="font-family: Courier New;">第二步输入关键字</span>

<span style="font-family: Courier New;"><img alt="" src="http://hi.csdn.net/attachment/201108/4/0_13124171126OOZ.gif"></span>

<span style="font-family: Courier New;">第三步搜素</span>

<span style="font-family: Courier New;"><img alt="" src="http://hi.csdn.net/attachment/201108/4/0_1312417131AsZE.gif"></span>

总结:这篇文章主要是讲解了stringByEvaluatingJavaScriptFromString的用法,它的功能非常的强大,用起来非常简单,通过它我们可以很方便的操作uiwebview中的页面元素。

 
0
2
分享到:
评论

相关推荐

    iOS中使用JSPatch框架使Objective-C与JavaScript代码交互

    在iOS应用开发中,JSPatch是一个强大的框架,它允许开发者使用JavaScript来调用和修改Objective-C代码,极大地提高了开发效率和灵活性。JSPatch基于Objective-C的运行时机制(runtime)以及Apple的JavaScriptCore...

    IOS下 内嵌 HTML编辑器 Objective-C与JavaScript数据交互

    UIWebView是苹果提供的一个视图组件,它可以加载和渲染网页,同时提供了与JavaScript交互的能力。在`SimulateHTMLDemo`这个示例项目中,很可能就包含了一个使用UIWebView实现的HTML编辑器示例。 要将HTML编辑器内嵌...

    iOS中js与objective-c的交互

    在iOS开发中,JavaScript与Objective-C的交互是一个常见的需求,特别是在构建混合应用或者利用Web技术增强原生应用功能时。本篇文章将详细讲解如何在iOS中实现JavaScript与Objective-C的双向通信,主要涉及Webview的...

    iOS Javascript与Objective-C互操作

    在iOS开发中,JavaScript与Objective-C的互操作性是一个重要的技术环节,特别是在混合式应用开发中。这种技术允许开发者利用JavaScript的灵活性和Objective-C的强大功能,实现高效且跨平台的应用程序。本文将深入...

    Objective-c-js-webView交互

    Objective-C与JavaScript在iOS开发中的交互是Web开发与原生应用结合的重要技术,尤其是在使用UIWebView展示网页内容时。本文将深入探讨如何实现Objective-C与JavaScript的双向通信,以实现丰富的功能集成和优化用户...

    [DEPRECATED] JavaScript bindings for Objective-C and C.zip

    Objective-C使用运行时系统来解析方法调用,这使得动态性成为可能,也方便了JavaScript与之交互。 C语言是底层的、通用的编程语言,是许多现代编程语言的基础。C语言库通常包含高效且经过优化的函数,可以直接在...

    Visual Studio 2015 编译 objective-c

    在讨论Visual Studio 2015编译Objective-C之前,首先需要了解Visual Studio是微软公司推出的一款集成开发环境(IDE),主要用来开发Windows平台的应用程序。而Objective-C是一种主要用在苹果公司Mac OS X和iOS操作...

    IOS WebView与JavaScript交互实现Web App

    在iOS开发中,为了构建丰富的用户界面,开发者经常会选择混合开发模式,即使用原生的Swift或Objective-C结合HTML、CSS和JavaScript来打造应用。这种模式下,`UIWebView`是苹果提供的一种关键组件,它允许我们在iOS...

    Objective-C 代码与Javascript 代码相互调用实例

    Objective-C作为iOS开发中较为传统的编程语言,在与网页的交互中常常需要调用JavaScript代码,同样JavaScript也可能需要调用Objective-C代码。这种相互调用技术在提供更为丰富的用户体验和功能实现方面发挥着重要...

    JavaScript与Objective-c互相调用

    JavaScript与Objective-C互相调用是iOS应用开发中的一个重要技术,特别是在构建混合式应用程序时,它允许我们利用Web技术与原生平台的能力相结合。在Xcode 4.6.3这样的开发环境中,我们可以利用UIWebView来实现这种...

    这是适用于Mac的下一代VLC,也称为Lunettes_Objective-C_JavaScript_下载.zip

    Objective-C是Apple的首选语言,用于开发macOS和iOS的应用程序。它的语法基于C语言,并添加了Smalltalk式的消息传递机制,使得对象间的交互更加直观。在VLC这样的多媒体应用中,Objective-C可能会用于构建图形用户...

    JSPatch bridge Objective-C

    这项技术的核心是通过Bridge,将JavaScript与Objective-C的世界连接起来,实现了动态更新功能,提高了开发效率并降低了维护成本。 **一、JSPatch的工作原理** JSPatch基于Google的V8 JavaScript引擎,它将...

    iOS开发中JS与OC交互.zip

    在iOS应用开发中,JavaScript(JS)与Objective-C(OC)的交互是一个常见的需求,特别是在混合式开发或者WebView中。本教程将详细讲解如何在iOS项目中实现JS与OC的通信,以提升用户体验并充分利用两者的优势。 首先...

    ios-JS与OC之间的交互.zip

    在iOS开发中,JavaScript(JS)与Objective-C(OC)之间的交互是常见需求,尤其是在混合式应用开发中。本教程将深入探讨如何实现这两种语言之间的通信,以创建更丰富的用户体验和功能。 首先,理解基本概念:...

    The Node.js ⇆ Objective-C bridge.zip

    1. **源代码**:可能包含Node.js的C++扩展或绑定,用于与Objective-C代码交互。这些代码可能包括`.cpp`或`.h`文件,实现了JavaScript调用Objective-C方法的接口。 2. **示例项目**:可能有一个或多个示例项目,展示...

    ios-JS与Native交互.zip

    在iOS开发中,JavaScript与Native代码的交互是一个重要...这个"IOS-JsAndNativeDemo"项目很可能是对以上知识点的一个实际应用展示,通过学习和理解该项目,开发者可以掌握在iOS应用中集成JavaScript并与之交互的技能。

Global site tag (gtag.js) - Google Analytics