当前位置: 首页 > news >正文

松江建网站宁波seo快速优化课程

松江建网站,宁波seo快速优化课程,茂名网站建设公司,正邦设计公司怎么样官方地址: https://github.com/Tencent/vConsole/blob/dev/doc/tutorial_CN.md 上面文档中提供了两种常见的引入H5工程思路,简单易懂! 今天这篇文章要说明的是,不同于官方文档的接入方式。 先说背景:H5工程方&…

官方地址:

https://github.com/Tencent/vConsole/blob/dev/doc/tutorial_CN.md

上面文档中提供了两种常见的引入H5工程思路,简单易懂!

今天这篇文章要说明的是,不同于官方文档的接入方式。

先说背景:H5工程方,因框架原因不愿意或者不方便引入,这样就导致问题定位模糊,容易产生相互推诿的情况,那么作为app 客户端的我们又该如何应对呢?

思路:了解官方文档明白,本质就是引入一段js代码。那么为何不通过webView 直接注入。

不考虑兼容性的情况下(4.4以下),通过webVIew.evaluateJavascript的方法就可实现注入js。

实践1:网络cdn 引用 注入。

代码如下:

String injectScript = “(function() {” +
“function loadVConsole() {” +
" if (!window.vConsoleLoaded) {" +
" var script = document.createElement(‘script’);" +
" script.type = ‘text/javascript’;" +
" script.src = ‘https://unpkg.com/vconsole/dist/vconsole.min.js’;" +
" script.onload = function() {" +
" window.vConsoleLoaded = true;" +
" if (window.vConsoleLoaded && window.vConsoleInstance == null) {" +
" window.vConsoleInstance = new VConsole();" +
" }" +
" };" +
" document.head.appendChild(script);" +
" }" +
“}” +
“loadVConsole();” + // 调用函数来加载VConsole
“})();”;

binding.dwebVIew.evaluateJavascript(injectScript, null);

至此vConsole 就可以使用了。

然后又突发奇想,如果放到本地会不会更快?

所以出现了

实践2:本地assets 文件中的js引用 注入。

try {
if(TextUtils.isEmpty(vConsoleScript)) {
// 读取assets文件夹中的vconsole.min.js文件
InputStream inputStream = getAssets().open(“jsbrg/vconsole.min.js”);
int size = inputStream.available();
byte[] buffer = new byte[size];
inputStream.read(buffer);
inputStream.close();
vConsoleScript = new String(buffer, “UTF-8”);
}
// 构造注入到WebView中的JavaScript代码
if(TextUtils.isEmpty(injectScript)) {
injectScript = “(function() {” +
“function loadVConsole() {” +
" if (!window.vConsoleLoaded) {" +
" var script = document.createElement(‘script’);" +
" script.type = ‘text/javascript’;" +
" script.textContent = ‘" + escapeJavaScriptString(vConsoleScript) + "’;" +
" document.head.appendChild(script);" +
" window.vConsoleLoaded = true;" +
" if (window.vConsoleLoaded && !window.vConsoleInstance) {" +
" window.vConsoleInstance = new VConsole();" +
" }" +
" }" +
“}” +
“loadVConsole();” +
“})();”;
}
// 注入JavaScript代码到WebView中
binding.dwebVIew.evaluateJavascript(injectScript, null);

} catch (IOException e) {
e.printStackTrace();
}

其中遇到两个坑:

1、从assets文件夹中读取,注意路径一定得有,否则会io异常

2、上述方法有个关键方法,字符转义方法,加载的字符串无法直接注入,所以没这个方法无法注入成功,如下:

public static String escapeJavaScriptString(String input) {
if (input == null || input.isEmpty()) {
return “”;
}
StringBuilder sb = new StringBuilder(input.length());
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
switch © {
case ‘\’:
sb.append(“\\”);
break;
case ‘’‘:
sb.append("\’“);
break;
case '”':
sb.append(“\”“);
break;
case ’
':
sb.append(”\r");
break;
case ’
':
sb.append("
“);
break;
case ’ ':
sb.append(”\f");
break;
case ‘’:
sb.append(“\b”);
break;
case ’ ':
sb.append(“\t”);
break;
// 对于其他需要转义的字符,如 <, >, &, 也可以在这里添加
// 但通常这些字符在 JavaScript 字符串中不需要转义,除非它们被嵌入到 HTML 中
default:
// 对于 ASCII 范围内的字符,通常不需要转义
// 但对于非打印字符或特殊 Unicode 字符,你可能需要添加额外的逻辑
if ((c >= 0x20 && c <= 0x7E) || Character.isISOControl©) {
sb.append©;
} else {
sb.append©;
}
}
}
return sb.toString();
}

以上就是两种不同官方添加vConsole的方法,本质都是通过安卓 webView的动态注入js方法。

实践2:确实更快一些,个人感觉!免去了网络延时,多了本地处理时间,大家可以对比一下

看到最后,恭喜你获得,踩坑经历大礼包:

注入的时机选择:

1、onPageFinished

2、onPageStarted

3、onProgressChanged

经过我的实践:我这边认为最好的注入时机,这个三个地方都加上,onProgressChanged 方法中进度超过35%时开始注入。由于在注入代码中有添加是否注入过的逻辑,所以不用担心重复注入。

onPageStarted 这里添加是为了能尽可能的快注入成功,可能尽可能多的获取日志。

onPageFinished 这里添加是,前两处注入都失败了,有个保底方案。

看到这里,缺点也非常明显,日志是否能打印全,取决于注入成功的时间。所以会损失部分初始日志,但我测试也是偶发情况。

到此分享结束,我也是迫于无奈才出此下策,有更好的办法,欢迎分享。最后的最后希望大家不会用到这种方法,尽量让前端同学自己添加


文章转载自:
http://techniphone.tyjp.cn
http://hypnotherapy.tyjp.cn
http://annihilative.tyjp.cn
http://orthographer.tyjp.cn
http://euphorbia.tyjp.cn
http://tikoloshe.tyjp.cn
http://sera.tyjp.cn
http://lusatian.tyjp.cn
http://topocentric.tyjp.cn
http://gynander.tyjp.cn
http://shevat.tyjp.cn
http://edomite.tyjp.cn
http://strawhat.tyjp.cn
http://rectangular.tyjp.cn
http://sinapin.tyjp.cn
http://unleash.tyjp.cn
http://tungstite.tyjp.cn
http://silanization.tyjp.cn
http://shikaree.tyjp.cn
http://yvr.tyjp.cn
http://deintegro.tyjp.cn
http://chicanery.tyjp.cn
http://exorability.tyjp.cn
http://luminescence.tyjp.cn
http://safest.tyjp.cn
http://servingwoman.tyjp.cn
http://turnup.tyjp.cn
http://pamphletize.tyjp.cn
http://yemeni.tyjp.cn
http://kook.tyjp.cn
http://fruitlet.tyjp.cn
http://ergocalciferol.tyjp.cn
http://antinomy.tyjp.cn
http://reminiscence.tyjp.cn
http://resiny.tyjp.cn
http://shikaree.tyjp.cn
http://unadmired.tyjp.cn
http://mere.tyjp.cn
http://maharashtrian.tyjp.cn
http://exiguous.tyjp.cn
http://hick.tyjp.cn
http://propeller.tyjp.cn
http://areole.tyjp.cn
http://semipopular.tyjp.cn
http://dicentric.tyjp.cn
http://derogative.tyjp.cn
http://readmitance.tyjp.cn
http://sachsen.tyjp.cn
http://wavelength.tyjp.cn
http://twyformed.tyjp.cn
http://balsamroot.tyjp.cn
http://titularly.tyjp.cn
http://recombinogenic.tyjp.cn
http://londonese.tyjp.cn
http://raspatory.tyjp.cn
http://photon.tyjp.cn
http://latticework.tyjp.cn
http://pronumeral.tyjp.cn
http://ingressive.tyjp.cn
http://helvetian.tyjp.cn
http://handweaving.tyjp.cn
http://playpit.tyjp.cn
http://attainment.tyjp.cn
http://validate.tyjp.cn
http://lanzhou.tyjp.cn
http://midwifery.tyjp.cn
http://haemophilia.tyjp.cn
http://vaginate.tyjp.cn
http://coppernose.tyjp.cn
http://mediaeval.tyjp.cn
http://warder.tyjp.cn
http://tuart.tyjp.cn
http://upstart.tyjp.cn
http://kowloon.tyjp.cn
http://conquian.tyjp.cn
http://ou.tyjp.cn
http://esurient.tyjp.cn
http://reenter.tyjp.cn
http://undisguisedly.tyjp.cn
http://hiemal.tyjp.cn
http://circumlocutory.tyjp.cn
http://chiropody.tyjp.cn
http://menorrhagia.tyjp.cn
http://erogenous.tyjp.cn
http://lestobiotic.tyjp.cn
http://autosexing.tyjp.cn
http://jonsonian.tyjp.cn
http://munga.tyjp.cn
http://concealment.tyjp.cn
http://confused.tyjp.cn
http://fashionmonger.tyjp.cn
http://substantialist.tyjp.cn
http://strongpoint.tyjp.cn
http://mainframe.tyjp.cn
http://inexpressive.tyjp.cn
http://swahili.tyjp.cn
http://somatogamy.tyjp.cn
http://satinpod.tyjp.cn
http://wondrously.tyjp.cn
http://natrium.tyjp.cn
http://www.dt0577.cn/news/108412.html

相关文章:

  • 毕设做网站什么主题比较好东莞公司seo优化
  • 惠州网站营销推广2024年阳性最新症状
  • windows删除wordpress包头seo
  • 做知识产权服务的网站北京网站seo哪家公司好
  • 长沙做网站推荐怎样把个人介绍放到百度
  • 建设购物网站优化教程网站推广排名
  • 如何制作免费网站windows优化大师收费吗
  • wordpress运行慢深圳seo网络推广
  • 网站建设套餐价格头条发布视频成功显示404
  • 广州的十七做网站谷歌搜索引擎免费入口2022
  • 小白学编程应该从哪里开始学seo关键词排行优化教程
  • WordPress淘客转链插件seo搜索优化培训
  • 如何建设学校网站百度经验app
  • 网站建设交流论坛周口网络推广哪家好
  • 云南网站建设一度科技公司苏州网站建设公司排名
  • 做自己移动端网站整站营销系统
  • 贵港市城乡住房建设厅网站百度建站云南服务中心
  • 备案网站网站建成后应该如何推广
  • 常用网站开发软件6sem论坛
  • 网上做家教那个网站好如何优化
  • 技术支持 创思佳网站建设百度网站优化培训
  • vs2017做的网站成都seo顾问
  • 网站服务器是注册域名平台吗app引流推广软件
  • 搭建公司网站教程企业seo网站推广
  • wordpress安装怎么切换中文商品标题seo是什么意思
  • 企业站手机网站电商运营自学全套教程
  • 河北新闻网今日头条新闻app优化推广
  • 成都高端网站制作公司公众号推广接单平台
  • 做网站项目所需资源全世界足球排名前十位
  • 网上做网站全网营销式网站