首页 > 其他分享 >webview注入js

webview注入js

时间:2023-03-11 11:23:04浏览次数:33  
标签:function console log js window webview document true 注入

js中与webview通信

function setStyle(){
  console.log('1111')
  return function () {
    console.log('2222')
    try{
      console.log('3333')
      //隐藏图片
      document.getElementsByClassName('img')[0].style.opacity=0;
      //模拟点击
      if(document.all) {//  兼容IE
        document.getElementsByClassName('img')[0].click();
      } else {//  兼容其它浏览器
        var e = document.createEvent("MouseEvents");
        e.initEvent("click", true, true);
        document.getElementsByClassName('img')[0].dispatchEvent(e);
      }
      var md = document.getElementsByTagName("video")[0];
      //监听视频开始播放
      md.addEventListener("play", function() {
        console.log("开始播放");
        //...要做的操作
      })
      //监听元素属性变化
      const observe = new MutationObserver((mutations) => {
        console.log('元素属性发生变化')
        //...要做的操作
      }).observe(document.querySelector('.tip'), {
          attributes: true
      })
      return '已删除'
    } catch(err) {
      return '执行失败:'+err
    }
  }
}
setStyle()()

//JS注册事件监听
function connectWebViewJavascriptBridge(callback) {
   if (window.WebViewJavascriptBridge) {
       callback(WebViewJavascriptBridge)
   } else {
       document.addEventListener(
           'WebViewJavascriptBridgeReady'
           ,  function () {
    if (window.onWebViewJavascriptBridgeReady)
      window.onWebViewJavascriptBridgeReady(
        (window.__bridge = WebViewJavascriptBridge)
      );
    callback(WebViewJavascriptBridge);
  },
           false
       );
   }
}
//初始化
connectWebViewJavascriptBridge(function(bridge) {
   bridge.init();
   //Android调用js方法去做一些操作
   bridge.registerHandler("ShowBtn", function(data, responseCallback) {
    let data1 = JSON.parse(data)
    if(data1.status){
      console.log("显示按钮")
      //... 要做的操作
    }else{
      console.log("隐藏按钮")
     //...要做的操作
    }
    var responseData = data1;
    responseCallback(responseData);
   });
})
//按钮状态切换时主动传递数据给webview
function btnStatus(bool) {
  window.WebViewJavascriptBridge.callHandler(
     'btnState', 
     {
      'isOpen':bool
     }, 
     function(responseData) {
      alert(responseData)
     }
 );
}
//按钮点击切换事件
var isClick=false
document.getElementsByClassName('btn')[0].onclick=function(){
 console.log('点击按钮')
  if(isClick){
    console.log('关闭')
    btnStatus(false)
    isClick=false
  }else{
    console.log('打开')
    btnStatus(true)
    isClick=true
  }
}

 

标签:function,console,log,js,window,webview,document,true,注入
From: https://www.cnblogs.com/chicidol/p/17205524.html

相关文章

  • WebApi问题与跨域和返回json
    1、编写接口时,发现访问不到指定接口注释掉[Authorize]特性给方法设置访问方式,已经指定路由方法如下2、出现一下跨域问题在web.config里面配置2、返回类型指定接口......
  • Linux 安装 Wiki.js
    一、概要1.环境(1)CentOS7.92009(2)Node.js16(3)Wiki.js2.5.2972.概念Wiki.js是一个开源的知识管理系统,它是一款使用JS编写的Node.js项目,它的文档类型支持M......
  • json.loads()
    json.loads()方法可用于解析有效的JSON字符串并将其转换为Python字典。它主要用于将包含JSON数据的本地字符串,字节或字节数组反序列化为Python字典。用法:json.loads(s)参......
  • Spring-DI(依赖注入)及Bean的作用域
    DI(依赖注入)1、构造器注入前面已经说过了2、set方式注入【重点】依赖注入:Set注入依赖:bean对象的创建依赖于容器注入:bean对象中的所有属性,由容器来注入【环境......
  • JSON断言和响应断言的使用
    在http请求下建立一个json断言的设置  2.响应断言的设置 ......
  • 使用http请求中获取到的一个字段给其他http请求使用(json提取器中设置)
    1.在新增学生信息的http请求中,获取到的data.id,在json提取器中设置 2.JSON提取器中的设置  3.data.id如何知晓:在新增学生信息成功后响应数据,复制该信息在https:/......
  • JS代码加密:Eval的终极用法
    Eval加密的终极用法Eval加密,做为一种传统且古老的JS代码加密方法,相信很多人都知道。例如这个在线Eval加密:​​https://www.fairysoftware.com/js_jia_mi_eval.html​​但这......
  • SQL Injection(SQL注入)
    什么是SQL注入?SQL(结构化查询语言)注入,通常称为SQLi,是对Web应用程序数据库服务器的攻击,会导致执行恶意查询。当Web应用程序使用未经正确验证的用户输入与数据库通信时,......
  • JS中undefined和null的区别
    ●JavaScript真是一个特殊的语言,其他语言都只有一个表示"无"的值,比如Java语言用的是null,C语言用的是NULL,Python语言用的是None,Ruby语言用的是nil.......
  • Java对象List<对象>转JSON的异常
    @Data@Accessors(fluent=true)publicclassA{privateStringid;privateList<B>b;}@Data@Accessors(fluent=true)publicclassB{privateS......