<html>
  
  <body>
  
  <script>
  
  function showAlert(){
  
  alert("JavaScript - hello , world !");
  
  }
  
  function showConfirm(){
  
  confirm("访问 https://blog.csdn.net/zhangphil");
  
  }
  
  function showPrompt(){
  
  var string=prompt("请输入用户名","用户名");
  
  }
  
  </script>
  
  <button type="button" id="button1" onclick="showAlert()">showAlert</button>
  
  <br>
  
  <button type="button" id="button2" onclick="showConfirm()">showConfirm</button>
  
  <br>
  
  <button type="button" id="button3" onclick="showPrompt()">showPrompt</button>
  
  </body>
  
  </html>
  
  上层Java代码:
  
  import android.content.DialogInterface;
  
  import android.os.Bundle;
  
  import android.support.v7.app.AlertDialog;
  
  import android.support.v7.app.AppCompatActivity;
  
  import android.webkit.JsPromptResult;
  
  import android.webkit.JsResult;
  
  import android.webkit.WebChromeClient;
  
  import android.webkit.WebSettings;
  
  import android.webkit.WebView;
  
  import android.widget.Toast;
  
  public class MainActivity extends AppCompatActivity {
  
  private WebView mWebView;
  
  @Override
  
  protected void onCreate(Bundle savedInstanceState) {
  
  super.onCreate(savedInstanceState);
  
  setContentView(R.layout.activity_main);
  
  mWebView = findViewById(R.id.webview);
  
  mWebView.loadUrl("file:///android_asset/web.html");
  
  WebSettings mWebSettings = mWebView.getSettings();
  
  //启用JavaScript。
  
  mWebSettings.setJavaScriptEnabled(www.qinlinyu.cn true);
  
  mWebSettings.setUseWideViewPort(true);
  
  mWebSettings.setJavaScriptCanOpenWindowsAutomatically(true);
  
  mWebView.setWebChromeClient(new WebChromeClient() {
  
  // 拦截JavaScript的Alert弹窗。
  
  @Override
  
  public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
  
  Toast.makeText(getApplicationContext(www.michenggw.com), "onJsAlert:" + message + "," + result.toString(), Toast.LENGTH_SHORT).show();
  
  result.confirm();
  
  //true,拦截JavaScript的弹窗。如果拦截了,不会出现弹窗。
  
  //false,不拦截JavaScript的弹窗,由WebView自行决定弹窗。
  
  return true;
  
  }
  
  // 拦截JavaScript的Confirm弹窗。
  
  @Override
  
  public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
  
  new AlertDialog.Builder(MainActivity.this)
  
  .setTitle("Android拦截JavaScript的Confirm弹窗")
  
  .setMessage(message + " , 确定吗?")
  
  .setPositiveButton("确定访问", new DialogInterface.OnClickListener() {
  
  @Override
  
  public void onClick(DialogInterface dialog, int which) {
  
  result.confirm();
  
  }
  
  })
  
  .setNegativeButton("取消访问", new DialogInterface.OnClickListener() {
  
  @Override
  
  public void onClick(DialogInterface dialog, int which) {
  
  result.cancel(www.dasheng178.com);
  
  }
  
  }).setCancelable(false)www.mingheyl178.com/.show();
  
  //true,拦截JavaScript的弹窗。如果拦截了,不会出现弹窗。
  
  //false,不拦截JavaScript的弹窗,由WebView自行决定弹窗。
  
  return true;
  
  }
  
  @Override
  
  public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
  
  System.out.println(result);
  
  result.confirm();
  
  //true,拦截JavaScript的弹窗。如果拦截了,不会出现弹窗。
  
  //false,不拦截JavaScript的弹窗,由WebView自行决定弹窗。
  
  return false;
  
  }
  
  });
  
  }

Android原生代码拦截H5 Web页面中JavaScript弹窗/弹框的更多相关文章

  1. PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码

    PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码 看看新闻网>看引擎>开源产品 0人收藏此文章, 发表于8小时前(2013-09-06 00:39) ...

  2. php中调用这个功能可以在web页面中显示hello world这个经典单词

    php程序写的时间长了,自然对他所提供的功能了如指掌,他所提供的一大堆功能,真是觉得很好用,但有时候会发现php也缺少一些功能,自己总是会产生为php添加一些自定义的功能的想法.久而久之,终于今天憋不 ...

  3. 关于在asp.net的web页面中的全局变量问题

    在asp.net的web页面中是不是没有全局变量?有的,在Class类内部的都是,只不过在WebWofm程式中跟WinForm和Console程式有些区别,当页面刷新时,它们的值不会保持,依然会再次初 ...

  4. [置顶] 读取pdf并且在web页面中显示

    读取pdf并且在web页面中显示 if (System.IO.File.Exists(f)) { Response.ContentType = "applicationpdf"; ...

  5. Android : 如何在WebView显示的页面中查找内容

    Android : 如何在WebView显示的页面中查找内容 Author : Aoyousatuo Zhao http://blog.sina.com.cn/aoyousatuo WebView是A ...

  6. web页面中可以包含多个对象

    # encoding=utf-8 #python 2.7.10 #xiaodeng #web页面中可以包含多个对象 #HTTP权威指南 10页 #应用程序完成一项任务时通常会发布多个http事务.如: ...

  7. 企业级监控软件Zabbix搭建部署之zabbix在WEB页面中的配置

    企业级监控软件zabbix搭建部署之zabbix在WEB页面中的配置 企业级监控软件zabbix搭建部署之zabbix在WEB页面中的配置 关于安装请看 http://www.linuxidc.com ...

  8. 微信开发之移动手机WEB页面(HTML5)Javascript实现一键拨号及短信发送功能

    在做一个微信的微网站中的一个便民服务电话功能的应用,用到移动web页面中列出的电话号码,点击需要实现调用通讯录,网页一键拨号的拨打电话功能. 如果需要在移动浏览器中实现拨打电话,发送email,美国服 ...

  9. [HTML] 微信开发之移动手机WEB页面(HTML5)Javascript实现一键拨号及短信发送功能

    在做一个微信的微网站中的一个便民服务电话功能的应用,用到移动web页面中列出的电话号码,点击需要实现调用通讯录,网页一键拨号的拨打电话功能. 如果需要在移动浏览器中实现拨打电话,发送email,美国服 ...

随机推荐

  1. 封装Excls数据导出功能 返回一个下载链接地址

    /// <summary> /// 获取本地存储地址 /// </summary> /// <param name="dt"></para ...

  2. quartz 核心概念

    一.quartz 核心概念 1.scheduler是一个计划调度器容器,容器里面可以盛放众多的JobDetail和trigger,当容器启动后,里面的每个JobDetail都会根据trigger按部就 ...

  3. 「日常训练」Kefa and Company(Codeforces Round #321 Div. 2 B)

    题意与分析(CodeForces 580B) \(n\)个人,告诉你\(n\)个人的工资,每个人还有一个权值.现在从这n个人中选出m个人,使得他们的权值之和最大,但是对于选中的人而言,其他被选中的人的 ...

  4. uvaoj 489 - Hangman Judge(逻辑+写代码能力)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  5. jmeter关联三种常用方法

    在LR中有自动关联跟手动关联,但在我看来手动关联更准确,在jmeter中,就只有手动关联 为什么要进行关联:对系统进行操作时,本次操作或下一次操作对服务器提交的请求,这参数里边有部分参数需要服务器返回 ...

  6. C++0x,std::move和std::forward解析

    1.std::move 1.1std::move是如何定义的 template<typename _Tp> constexpr typename std::remove_reference ...

  7. 爬虫2.1-scrapy框架-两种爬虫对比

    目录 scrapy框架-两种爬虫对比和大概流程 1. 传统spider爬虫 2. crawl型爬虫 3. 循环页面请求 4. scrapy框架爬虫的大致流程 scrapy框架-两种爬虫对比和大概流程 ...

  8. Jedis 与 MySQL的连接线程安全问题

    Jedis的连接是非线程安全的 下面是set命令的执行过程,简单分为两个过程,客户端向服务端发送数据,服务端向客户端返回数据,从下面的代码来看:从建立连接到执行命令是没有进行任何并发同步的控制 pub ...

  9. LeetCode - 459. Repeated Substring Pattern - O(n)和O(n^2)两种思路 - KMP - (C++) - 解题报告

    题目 题目链接 Given a non-empty string check if it can be constructed by taking a substring of it and appe ...

  10. vue移动音乐app开发学习(二):页面骨架的开发

    本系列文章是为了记录学习中的知识点,便于后期自己观看.如果有需要的同学请登录慕课网,找到Vue 2.0 高级实战-开发移动端音乐WebApp进行观看,传送门. 完成后的页面状态以及项目结构如下: 一: ...