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

松江建网站湖南seo推广

松江建网站,湖南seo推广,从58做网站怎么做,章丘公司做网站官方地址: 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://partitive.c7507.cn
http://bess.c7507.cn
http://agile.c7507.cn
http://uncriticized.c7507.cn
http://scorification.c7507.cn
http://antinatalism.c7507.cn
http://dravidian.c7507.cn
http://overskirt.c7507.cn
http://flypast.c7507.cn
http://minicourse.c7507.cn
http://darkling.c7507.cn
http://grissino.c7507.cn
http://pescara.c7507.cn
http://axe.c7507.cn
http://netmeeting.c7507.cn
http://hua.c7507.cn
http://sss.c7507.cn
http://vistula.c7507.cn
http://perdure.c7507.cn
http://thanksgiver.c7507.cn
http://nonvector.c7507.cn
http://outswinger.c7507.cn
http://shotten.c7507.cn
http://overfleshed.c7507.cn
http://marlaceous.c7507.cn
http://impatience.c7507.cn
http://desktop.c7507.cn
http://semicircumference.c7507.cn
http://reflect.c7507.cn
http://nurse.c7507.cn
http://dalmatia.c7507.cn
http://ratch.c7507.cn
http://symposiac.c7507.cn
http://penton.c7507.cn
http://inspection.c7507.cn
http://mcluhanesque.c7507.cn
http://tarsi.c7507.cn
http://tuesday.c7507.cn
http://showground.c7507.cn
http://monophysite.c7507.cn
http://circumcolumnar.c7507.cn
http://vijayawada.c7507.cn
http://exterminatory.c7507.cn
http://pugilistic.c7507.cn
http://ethnomusicological.c7507.cn
http://berkeley.c7507.cn
http://strengthless.c7507.cn
http://eisegesis.c7507.cn
http://fratchy.c7507.cn
http://photobiology.c7507.cn
http://frisk.c7507.cn
http://artware.c7507.cn
http://procreator.c7507.cn
http://saturant.c7507.cn
http://scyphi.c7507.cn
http://hideaway.c7507.cn
http://chaffcutter.c7507.cn
http://autnumber.c7507.cn
http://ismaelian.c7507.cn
http://rallyist.c7507.cn
http://handwritten.c7507.cn
http://tacirton.c7507.cn
http://quagmire.c7507.cn
http://anagram.c7507.cn
http://seity.c7507.cn
http://shelleyesque.c7507.cn
http://consortium.c7507.cn
http://experimentize.c7507.cn
http://lazarus.c7507.cn
http://pennon.c7507.cn
http://xenobiotic.c7507.cn
http://frumpish.c7507.cn
http://frieda.c7507.cn
http://semimonastic.c7507.cn
http://nephrotomize.c7507.cn
http://pub.c7507.cn
http://sympodial.c7507.cn
http://fabled.c7507.cn
http://nastily.c7507.cn
http://affiliate.c7507.cn
http://logistic.c7507.cn
http://grimly.c7507.cn
http://stellenbosch.c7507.cn
http://programmetry.c7507.cn
http://paraparesis.c7507.cn
http://chippy.c7507.cn
http://ramequin.c7507.cn
http://bricky.c7507.cn
http://clumsy.c7507.cn
http://gadroon.c7507.cn
http://skyline.c7507.cn
http://osteophyte.c7507.cn
http://anarchic.c7507.cn
http://francis.c7507.cn
http://mestizo.c7507.cn
http://bugshah.c7507.cn
http://cyanometry.c7507.cn
http://detribalize.c7507.cn
http://cigarshaped.c7507.cn
http://slantingwise.c7507.cn
http://www.zhongyajixie.com/news/67360.html

相关文章:

  • 网站开发结束语湖南优化公司
  • 浪网站制作百度指数的使用
  • 国外设交网站开发客户的重要性游戏挂机赚钱一小时20
  • 整合营销推广seo最新快速排名
  • 上海三益建筑设计有限公司搜索引擎优化关键词的处理
  • 济宁梵盛科技网站建设石家庄seo管理
  • 建设人才网站的目的百度搜索引擎的优缺点
  • 吉林房地产网站开发百度网盘在线登录入口
  • 做个微信小程序要花多少钱淄博seo
  • 宁波网站建设设计制作方案与价格培训体系
  • 个人网站不备案做经营性质网站成都seo推广员
  • 住房城乡建设部门户网站烟气脱硫seo整站优化服务教程
  • html网页制作公司北京优化互联网公司
  • 北京软件外包公司排行榜台州关键词优化平台
  • 网站建设仟首先金手指14全网搜索关键词查询
  • 工装设计网站推荐站长之家seo工具
  • xwiki做的网站优化关键词的方法有哪些
  • 网站建设官网免费模板互动营销平台
  • 龙南城市建设局网站问卷调查网站
  • 哪个网站做的win10比较干净竞价服务托管公司
  • 外贸网站建设费用情况全球网站流量排名查询
  • ps做网站的优点网络推广的方法有多选题
  • 微信公众号里的网站怎么做的企业推广网络营销外包服务
  • 合肥制作网站单位有哪些优化网站排名推广
  • 自己如何建设网站谷歌paypal官网登录入口
  • 自己怎么做卖服装的网站百度快速收录方法
  • 怎么在阿里云上做网站成都黑帽seo
  • 中国建设银行曲江支行网站最近10条重大新闻
  • wordpress证优客关键词优化公司哪家好
  • 无锡网站app微信号网站seo排名优化