• webView和js交互规范


    第一次交互式交互建议阅读webView与vue交互


    注:原生app向js注入app对象,前端可通过app 调用原生方法;例如设置title文本 app.setTilte("抢红包")

    1、web页面加载时需要app的参数时:
    采用url路径传参:例如:?chainName=ggband&age=28

    2、title标题文本:
    @一个页面不需要改变title时:
    1) 普通web项目配置<title>标签
    2)vue项目在切换router时设置document.title = to.meta.title;

    exp:  main.js

    router.afterEach(function (to, from) {
      app.setDefaultTitleBar();
      if(to.meta.title){
          document.title = to.meta.title;
      }
    });


    @一个页面需要改变title时:
    调用原生setTitle(str);其中str就是标题文本

    exp: methods

    app.setTitle("Love");


    3、subtitle 副标题:
    1) 设置副标题文本:setSubtitle(str);其中str就是副标题文本

    exp: methods

    app.setSubtitle("点我啊");


    2)subtitle点击事件:原生app调用web的onSubtitleClick()方法,由前端自行响应onSubtitleClick()

    exp: 

    <script>
    export default {
      mounted() {
         window.onSubtitleClick= this.onSubtitleClick
    },
    
    methods: {
       onSubtitleClick(){
         alert("你点击副标题了:");
       }
    }
    }
    </script>

    4、设置标题栏背景颜色:setTitleBarBgColor(color);其中color为"#ff0000"格式的字符串

    exp: methods

     app.setTitleBarBgColor("#ff0000");

    5、设置标题栏透明度:setTitleBarAlpha(alpha);其中alpha取值范围(0--255)注:0为全透明,255为不透明

      app.setTitleBarAlpha(0);//设置全透明

    6、状态栏文字和标题栏文字及icon色系:目前兼容两种色系:黑色系和白色系
    1)黑色系:setLightMode()
    2)白色系:setDartMode()

    7、隐藏标题栏:hideTitlebar();隐藏titleBar后前端可自行指定标题栏

    8、关闭当前页面:finishPage(),前端自定义标题栏可能会用到

    9、置顶(沉侵式)web页面内容延伸到状态栏:setImmersivel()

    10、share分享
    1) 分享链接 shareUrl(params,callback);
    其中params包含:
    title标题; url链接; content内容; iconUrl图片链接
    callback(status):分享回调函数 status = 0:成功; status = 1:失败;status = -1:用户取消分享

    exp:

    <template>
    <p><button @click="shareUrl()">分享Url</button></p>
    </template> <script> export default { mounted() { window.shareCallback = this.shareCallback }, methods: { shareCallback(status){ alert("shareCallback:"+status); }, shareUrl(){ //分享链接 shareUrl(params,callback); //title标题; url链接; content内容; iconUrl图片链接 var params ={}; params.title="你在看视频" params.url="url" params.content="content" params.iconUrl="iconUrl" app.shareUrl(JSON.stringify(params),"shareCallback"); }
    }
    }
    </script>


    2) 分享图片
    shareImage(data,callback);
    @其中data以http开头时:app视作图片在网络环境
    @其中data不为http开头时:app视作图片时base64格式;(web要分享页面部分内容时可采用此方式)
    callback(status):分享回调函数 status = 0:成功; status = 1:失败;status = -1:用户取消分享
    注:web前端可用html2canvas插件 可将页面部分内容转化成base64

    exp:

    // 引入html2canvas
    //npm install html2canvas

    <template>
    <!-- 把需要生成截图的元素放在一个元素容器里,设置一个ref -->
    <div class="image_tofile" ref="imageTofile">
      <!-- 这里放需要截图的元素,自定义组件元素也可以 -->

    <!-- 如果需要展示截取的图片,给一个img标签 -->
    <img :src="htmlUrl">

    <button @click="toImage">截图</button>
    <div class="hello">
    <h1>{{ msg }}</h1>
    <h2>Essential Links</h2>
    <ul>
    <li>
    <a
    href="https://vuejs.org"
    target="_blank"
    >
    Core Docs
    </a>
    </li>
    <li>
    <a
    href="https://forum.vuejs.org"
    target="_blank"
    >
    Forum
    </a>
    </li>
    <li>
    <a
    href="https://chat.vuejs.org"
    target="_blank"
    >
    Community Chat
    </a>
    </li>
    <li>
    <a
    href="https://twitter.com/vuejs"
    target="_blank"
    >
    Twitter
    </a>
    </li>
    <br>
    <li>
    <a
    href="http://vuejs-templates.github.io/webpack/"
    target="_blank"
    >
    Docs for This Template
    </a>
    </li>
    </ul>
    <h2>Ecosystem</h2>
    <ul>
    <li>
    <a
    href="http://router.vuejs.org/"
    target="_blank"
    >
    vue-router
    </a>
    </li>
    <li>
    <a
    href="http://vuex.vuejs.org/"
    target="_blank"
    >
    vuex
    </a>
    </li>
    <li>
    <a
    href="http://vue-loader.vuejs.org/"
    target="_blank"
    >
    vue-loader
    </a>
    </li>
    <li>
    <a
    href="https://github.com/vuejs/awesome-vue"
    target="_blank"
    >
    awesome-vue
    </a>
    </li>
    </ul>
    </div>

    </div>
    </template>

    <script>
    import html2canvas from 'html2canvas'
    export default {
    name: 'HelloWorld',
    data () {
    return {
    msg: 'Welcome to Your Vue.js App',
    htmlUrl: ''
    }
    },
    mounted() {
          window.shareCallback = this.shareCallback;
          app.setLightMode();//設置黑色系文字
          app.setTitleBarAlpha(0);//設置標題欄全透明
          app.setImmersivel();//置顶

    },
    components: {
      html2canvas
    },
    methods: {

          shareCallback(status){
              alert("shareCallback:"+status);
       },
        toImage() {
            html2canvas(this.$refs.imageTofile, {
           backgroundColor: null
        }).then((canvas) => {
          let url = canvas.toDataURL('image/png');
          this.htmlUrl = url;
              app.shareImage(url,"shareCallback")
        })
      }
    }
    }
    </script>

    11、跳转到app的某一页面
    1)客户端为Android时:

    @navTo(cls);不带参数

    exp:

    <template>
     <p><button @click="navToUserCenter()">android:跳转个人中心</button></p>
    </template>
    
    <script>
    export default {
    methods: {
       navToUserCenter(){
           app.navTo("com.starteos.st.compon.user.UserInfoActivity");
          }
      }
    }
    </script>

    @navTo(cls,params);带参数

    exp:

    <template>
    <p><button @click="navToCouponTab2()">android:跳转加息卷选中第二个tab</button></p>
    </template>
    
    <script>
    export default {
    methods: {
      navToCouponTab2(){
                //分享链接 shareUrl(params,callback);
                //title标题; url链接; content内容; iconUrl图片链接
                 var params = {"tab":"1"};
                 app.navTo("com.starteos.st.compon.coupon.CouponActivity",JSON.stringify(params));
           }
      }
    }
    </script>

    cls:组件路径 如加息卷页面:com.starteos.st.compon.coupon.CouponActivity

    其中params:

    页面参数;采用{key:value}的格式,键和值都采用String;如选中加息卷页面的第二个tab时:需要传入参数{"tab":"1"};
    多参数时:{"tab":"1","id":"12"}
    2)客户端为Ios时:

    12、默认标题栏 白色背景、黑色文字setDefaultTitleBar

    exp:每次切换路由设置默认标题栏,在main.js加入

    router.afterEach(function (to, from) {
      app.setDefaultTitleBar();
      if(to.meta.title){
          document.title = to.meta.title;
      }
    });



    ggband
  • 相关阅读:
    Fragment练习
    view有了父元素就不能再添加父元素
    margin与padding的不同
    BroadcastReceiver组件
    史上最著名的10个思想实验[转]

    godaddy域名空间购买波折
    碎片2
    程序员要多喝水
    google.com的首页换上了pc man游戏
  • 原文地址:https://www.cnblogs.com/ggband/p/10868030.html
Copyright © 2020-2023  润新知