在webView中使用JAVAScript定位

目的:

   在我们IOS开发中,有时我们需要用webView来打开一些html文件,并且我需要需要定位到某一行(效果如下图),左图是想要实现的效果。那么如何做到呢?

                                                  

步骤:

  1. 先来分析一下html5中如何写javaScript代码,如下图

!DOCTYPE html>
<html>
<head>
<title>帮助说明 - 网易彩票</title>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1">
<meta name="format-detection" content="telephone=no">
<link rel="stylesheet" type="text/css" href="rule.css">

<script>
    // 写javascript代码

    // 通过这个家伙可以做跳转
    window.location.href = ‘#howtorecharge‘;

</script>

</head>
<body>
<div>
    <section id="wrapper">
        <article id="scroller">
            <dl class="dlInfo">
                <dt id="howtoprize"> 1. 如何领奖?</dt>
                <dd>单注一万元(含)以下奖金直接打到您的网易宝账户,可以随时消费或提现;单注一万元(含)以上奖金,需要您本人亲自兑奖或授权兑奖,请您放心,如果您中了大奖,我们会有专人及时联系您告知您详细领奖流程!</dd>
                <dt id="howtorecharge"> 2. 如何充值?</dt>
                <dd> 登录后在“我的彩票-网易宝余额”页面,点击“充值”进入网易宝,选择充值方式:快捷支付、网上银行、手机充值卡等,输入充值金额即可。同时推荐您购买红包,享受一键支付的便捷,还有优惠!</dd>
                <dt id="howtowithdraw"> 3. 如何提现?</dt>
                <dd>登录后在“我的彩票-网易宝余额”页面,点击“提现”进入网易宝,按照提示操作即可完成提现。</dd>
                <dt id="howtobuy"> 4. 如何购彩?</dt>
                <dd>登录后在“购彩大厅”选择您想购买的彩种和投注号码,确认支付。购买成功后,您的投注将自动生成订单,可以在“我的彩票”中查看您的投注记录,如您中奖,奖金将自动派发到您的账户中。</dd>
                <dt id="whatisfollowandtimes"> 5. 如何连续多期买同一注号码? </dt>
                <dd>使用追号功能即可。比如您选了1注号,并决定连续5期都买这一注,那么只要修改连续购买的期数为5,并提前支付10元钱预付款,系统就会帮您每期都购买。</dd>
                <dt id="howtogroupbuy"> 6. 如何跟别人合资买彩票? </dt>
                <dd>合买是由多人共同出资购买彩票,按照出资比例分享奖金的投注方式。您可以在“合买跟单”中挑选发起人战绩优秀、号码靠谱的方案进行跟单。方案中奖后按认购方案的比例分享奖金。</dd>
                <dt id="howtoquickpay"> 7. 如何快速支付? </dt>
                <dd> 在手机购彩支付,最快捷的方式是使用红包支付。红包相当于一个彩金账户,每次购彩优先从红包余额扣款,不需要再跳到支付平台或网银进行繁琐的支付流程,真正实现“一键支付”!您可以进入“我的彩票”选购任意面值的红包。</dd>
            </dl>
        </article>
    </section>
</div>
</body>
</html>

  2.很明显从上面代码中我们可以看出需要一个ID来跳转

  3.再来看一个json文件

[
  {
    "title" : "如何领奖?",
    "html" : "help.html",
    "id" : "howtoprize"
  },
  {
    "title" : "如何充值?",
    "html" : "help.html",
    "id" : "howtorecharge"
  },
  {
    "title" : "如何提现?",
    "html" : "help.html",
    "id" : "howtowithdraw"
  },
  {
    "title" : "如何购彩?",
    "html" : "help.html",
    "id" : "howtobuy"
  },
  {
    "title" : "如何连续多期买同一注号码?",
    "html" : "help.html",
    "id" : "whatisfollowandtimes"
  },
  {
    "title" : "如何跟别人合资买彩票?",
    "html" : "help.html",
    "id" : "howtogroupbuy"
  },
  {
    "title" : "如何快速支付?",
    "html" : "help.html",
    "id" : "howtoquickpay"
  },
}

  4.很明显我们可以定义一个模型来获取json文件,这里面模型为htmlItem

/** title */
@property (nonatomic, strong) NSString *title;
/** html */
@property (nonatomic, strong) NSString *html;
/** ID */
@property (nonatomic, strong) NSString *ID;

  5.创建webView发送请求

  UIWebView *webView = (UIWebView *)self.view;

// 如果文件路径中有中文,转换成URL会失败,
NSURL *url = [[NSBundle mainBundle] URLForResource:_htmlItem.html withExtension:nil];
// 创建请求
    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    [webView loadRequest:request];

    webView.delegate = self;

  -上面的代码如何请求url时如果路径有中文需要通过编码才可以,通常用UTF8

  NSString *filePath = [[NSBundle mainBundle] pathForResource:@"help.html" ofType:nil];
//    // 如果路径中有中文,必须转换下百分号,通常用UTF8转中文
   filePath = [filePath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

//
    NSURL *url = [NSURL URLWithString:filePath];

  6.也是最关键的一步,监听webView的加载完成的代理方法,通过stringByEvaluatingJavaScriptFromString:方法来执行javaScript

// webView加载完成的时候调用
// 执行javascript,必须要在webView加载完成时候执行
- (void)webViewDidFinishLoad:(UIWebView *)webView
{

 NSString *javaStr = [NSString stringWithFormat:@"window.location.href = ‘#%@‘;",_htmlItem.ID];

 [webView stringByEvaluatingJavaScriptFromString:javaStr];
}

  7.效果图

时间: 2024-08-24 00:48:13

在webView中使用JAVAScript定位的相关文章

Android WebView中的JavaScript代码使用(转载)

转载来源:http://www.cnblogs.com/mengdd/archive/2013/03/02/2940185.html 本篇文章主要介绍WebView中的JavaScript代码的执行相关,已经JS代码与Android代码的互相调用. (因为本人对Web开发并不是很熟悉,所以如果有哪些地方说得不对,还请指正.) 在WebView中使用JavaScript 如果你想要载入的页面中用了JavaScript,你必须为你的WebView使能JavaScript. 一旦使能之后,你也可以自己

UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等) - walterlv

原文:UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等) - walterlv UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等) 2018-12-30 14:08 UWP 中使用 WebView 时可以在网页中额外执行一些代码.于是你几乎可以在网页上做任何事情,那些你可以在浏览器控制台中做的事情. 本文将介绍做法. 本文内容 准备环境 执行 JavaScript 代码 模拟用户输入 JavaScript eval(string

iOS的WebView中使用javascript调用原生的api

1. 首先在javascript中加入相关代码 $('.content .saveCode').on('touchstart', function () {//touchstart if (temp == 0) { jump(); } if (temp == 1) { android.savePic(image.src); } }); function jump() {//IOS var touchstart = true; window.location = "/touchstart"

使用WebView中的Javascript和本地代码交互

在加载url之前,使用 Webview的addJavascriptInterface方法注册本地代码和javascript的绑定. 比如js里面调用Toast.show(message),那么就需要在addJavascriptInterface中将本地的类绑定到js里面的类名Toast. 例如:mWebview.addJavascriptInterface(new ShowToast(), JS_BIND_NAME_TOAST); 在本地类ShowToast中实现public方法show(str

WebView 中重写javascript 常用函数

常规函数   javascript 常规函数包括以下3个函数:  (1)alert函数:显示一个警告对话框,包括一个OK按钮. 对应:http://www.dreamdu.com/javascript/window.confirm/(2)confirm函数:显示一个确认对话框,包括OK.Cancel按钮. 对应:http://www.dreamdu.com/javascript/window.alert/(3)prompt函数:显示一个输入对话框,提示等待用户输入. 对应:http://www.

Android WebView Java和JavaScript交互

Java调用JavaScript mWebView.loadUrl("javascript:toast()"); js: <script language="javascript> <!--提供给android的java代码调用--> function toast(){ alert("fdsaf") } JavaScript调用Java WebView提供了一个名为WebSetting的工具类来实现让WebView中的JavaScr

Android安全开发之WebView中的地雷

0X01 About WebView 在Android开发中,经常会使用WebView来实现WEB页面的展示,在Activiry中启动自己的浏览器,或者简单的展示一些在线内容等.WebView功能强大,应用广泛,但它是天使与恶魔的合体,一方面它增强了APP的上网体验,让APP功能更多样化,另一方面它也引入了很多的安全问题.在过去几年WebView中被披露的重大漏洞包括了任意代码执行漏洞.跨域.密码明文保存等,这些安全问题可以直接导致用户敏感信息泄露,移动终端被恶意攻击者控制.下文将详细介绍这一系

WebView中的视频全屏的相关操作

最近工作中,基本一直在用WebView,今天就把它整理下: WebView 顾名思义,就是放一个网页,一个看起来十分简单,但是用起来不是那么简单的控件. 首先你肯定要定义,初始化一个webview,其实网上的例子很多,我这里就简单的把一些WebView 中可能会用到的的很重要的属性以及支持全屏播放视频该怎么实现的代码粘出来,直接放到项目中去就行了 <span style="white-space:pre"></span><pre name="co

Android:WebView中对图片注册上下文菜单

前言 今天一朋友问我一个问题,就是如何在WebView控件中的图片增加上下文菜单,以便增加保存图片等功能.今天就给他简单做了一个演示Demo,现写下来,给有相同问题的朋友提供些许思路吧. 概要实现 其实这个功能很简单,没有太复杂的东西,就是对WebView的控件的使用,一是给WebView注册了上下文菜单事件,二是在响应事件中去判断事件源的类型,如果是图片类型,则把url取出来 注册上下文菜单事件 这个就比较简单了通过下面的代码即可完成. WebView vw = (WebView) findV