WebView 实现JS效果和a标签的点击事件

目前很多android app都可以显示web页面的界面,嵌入式开发,这个界面一般都是WebView这个控件加载出来的,学习该控件可以为你的app开发提升扩展性。

先说下WebView的一些优点:

  1. 可以直接显示和渲染web页面,直接显示网页
  2. webview可以直接用html文件(网络上或本地assets中)作布局
  3. 和JavaScript交互调用
  4. 网页标签的点击事件

效果:(网页顶部是JS效果滚动,4个模块可以实现点击事件,可看到信息提示)

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${relativePackage}.${activityClass}" >

       <WebView
           android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/webview"
            />

</RelativeLayout>

MainActivity.java

public class MainActivity extends Activity {

    public String URL = "http://bajie.zhangwoo.cn/app.php?platform=android&appkey=5a379b5eed8aaae531df5f60b12100cfb6dff2c1&c=travel&a=home";
    WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webView = (WebView) findViewById(R.id.webview);
        webView.loadUrl(URL);
        initView();

    }
    @SuppressLint("SetJavaScriptEnabled") private void initView() {
        // TODO Auto-generated method stub
        webView.requestFocus();
        webView.setHorizontalScrollBarEnabled(true);
        webView.setVerticalScrollBarEnabled(true);
        WebSettings web = webView.getSettings();
        web.setJavaScriptEnabled(true);// 启用支持javascript
        web.setBuiltInZoomControls(true);
        web.setSupportZoom(true); // 是否支持屏幕双击缩放,但是下边的是前提
        web.setDefaultTextEncodingName("utf-8");// 设置编码格式
        // 覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // TODO Auto-generated method stub
                // 返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器

                if (url.indexOf("zwapp://showlist/?tab=zhoubian") != -1) {

                    Toast.makeText(getApplicationContext(), "周边游", 1).show();

                } else if (url.indexOf("zwapp://showlist/?tab=gonglue") != -1) {

                    Toast.makeText(getApplicationContext(), "旅游攻略", 1).show();
                } else if (url.indexOf("zwapp://showlist/?tab=zhaiguo") != -1) {

                    Toast.makeText(getApplicationContext(), "摘果", 1).show();
                } else if (url.indexOf("zwapp://showlist/?tab=gongyuan") != -1) {

                    Toast.makeText(getApplicationContext(), "主题公园", 1).show();

                } else {

                }
                return true;

            }
        });

    }

}

记得加网络权限

<uses-permission android:name="android.permission.INTERNET"/>

源码下载:  

CSDN:http://download.csdn.net/detail/dickyqie/9705932

时间: 2024-08-08 22:08:50

WebView 实现JS效果和a标签的点击事件的相关文章

js新添加的标签,点击事件无效的原因和解决办法

对于新添加的标签应用如下写法会失效: $('.class').on("click",function(){--});相当于: $('.class').bind("click",function(){--});下边的方法会生效: $(document).on("click",'.class',function(){--});相当于: $('.class').live("click",function(){--});新版本的jqu

html——a标签添加点击事件,火狐浏览器直接显示0

一.问题描述 给一个a标签添加了点击事件,页面直接给了0如下图 二.问题解决 后台调试模式下,发现也进了后台方法,也返回了页面. 于是想到先把页面里大部分内容去掉,去掉所有js,查看是否是部分代码有问题,这样做后,发现js完全去掉,只保留点击事件,效果也还是这样. 但是有几点奇怪的地方: 1.进了后台方法,还没执行完,页面就变成0了 2.无论将页面中什么元素去掉,这个效果都不变 3.看浏览器调试器,发现请求根本没有响应信息 但是页面已经显示了0,开始以为ajax请求有问题,但是重写了也依然如此.

我们常用的在a标签中有点击事件

我们常用的在a标签中有点击事件:1. a href="javascript:js_method();" 这是我们平台上常用的方法,但是这种方法在传递this等参数的时候很容易出问题,而且javascript:协议作为a的href属性的时候不仅会导致不必要的触发window.onbeforeunload事件,在IE里面更会使gif动画图片停止播放.W3C标准不推荐在href里面执行javascript语句 2. a href="javascript:void(0);"

html A标签 绑定点击事件。跳转页面。处理

在平时的页面中,肯定有需要点击A标签 进行处理. 这时候习惯性的绑定一个点击事件进行数据处理. 在A标签中 herf="#" 然后绑定一个点击事件. 或者在A标签里面的元素里面有一个点击事件 . 当点击这个i图标的时候,他会默认跳走.会默认跳转到你项目根目录的index页面. 这个时候需要在 i 绑定的点击事件中把a跳转链接取消,禁用都可以. 注意:function 后面一定要把写e进来 . 或者写的时候直接写 <a href="javascript:void(0);

防止多次引入js文件导致的重复注册点击事件

前端代码中的js文件如果是动态引入的或者是某个事件操作进行注册的,那么重复的引入js文件或者多次触发注册事件会导致事件多次进行注册,造成不必要的麻烦,所以需要在每次注册之前将先前的事件进行取消,下面以按钮的注册点击事件为例进行说明: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title>

js怎么监听一类标签的点击事件

如: <a datatype="a1"></a> 获取方式: $(document).on("click", "a[datatype='a1']", function(event){ }); 原文地址:https://www.cnblogs.com/jiao-/p/11251634.html

Zepto.js touch模块深入分析 解决手机点击事件

源码: // Zepto.js // (c) 2010-2015 Thomas Fuchs // Zepto.js may be freely distributed under the MIT license. ; (function($) { var touch = {}, touchTimeout, tapTimeout, swipeTimeout, longTapTimeout, longTapDelay = 750, gesture function swipeDirection(x1

怎样在a标签上加点击事件,实现页面跳转,并在目标页面内显示出某个隐藏的div?

target伪类实现下面效果,缺点只有IE9及以上支持 主页面: <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>target伪类</title> </head> <body> <a href="

jQuery触发&lt;a&gt;标签的点击事件无效

1 <a id="workFrame" href="pages/work.html" target="FrameBox">首页</a> 2 3 $("#workFrame").tigger("click"); 上述的代码,其实挺正常的,但是怎么也触发不了a标签的click事件.百度一下,解决方案如下 1 <a id="workFrame" href=&quo