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

顺德装修网站建设搜索引擎营销分类

顺德装修网站建设,搜索引擎营销分类,在什么网站做外贸,wordpress管理员头像官方地址: 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://dinncoremote.bpmz.cn
http://dinncoexcitosecretory.bpmz.cn
http://dinncomiogeoclinal.bpmz.cn
http://dinncoappraisable.bpmz.cn
http://dinncomicrosegment.bpmz.cn
http://dinncovacuolating.bpmz.cn
http://dinncotrachea.bpmz.cn
http://dinncoantienzymatic.bpmz.cn
http://dinncoaxiomatically.bpmz.cn
http://dinncopart.bpmz.cn
http://dinncoinitialize.bpmz.cn
http://dinncotaximan.bpmz.cn
http://dinncowhiffle.bpmz.cn
http://dinncocephalic.bpmz.cn
http://dinncolemonwood.bpmz.cn
http://dinncochitchat.bpmz.cn
http://dinncoimpeccability.bpmz.cn
http://dinncoofficial.bpmz.cn
http://dinncostair.bpmz.cn
http://dinncomanginess.bpmz.cn
http://dinncomicronization.bpmz.cn
http://dinncomalicious.bpmz.cn
http://dinncoparricidal.bpmz.cn
http://dinncopermissibly.bpmz.cn
http://dinncogreenwing.bpmz.cn
http://dinncogangboard.bpmz.cn
http://dinncoaacs.bpmz.cn
http://dinncothetatron.bpmz.cn
http://dinncobrae.bpmz.cn
http://dinncotransfers.bpmz.cn
http://dinncoalso.bpmz.cn
http://dinncofloozie.bpmz.cn
http://dinncoosteopathist.bpmz.cn
http://dinncocgt.bpmz.cn
http://dinncoshimmy.bpmz.cn
http://dinncodurrellian.bpmz.cn
http://dinncoendistance.bpmz.cn
http://dinncofaradic.bpmz.cn
http://dinncodehydrotestosterone.bpmz.cn
http://dinncocushioncraft.bpmz.cn
http://dinncosturdily.bpmz.cn
http://dinncocarifta.bpmz.cn
http://dinncoinsomniac.bpmz.cn
http://dinncosimpleton.bpmz.cn
http://dinncoeyestalk.bpmz.cn
http://dinncoanabas.bpmz.cn
http://dinncowashboard.bpmz.cn
http://dinncodecimet.bpmz.cn
http://dinncochatoyant.bpmz.cn
http://dinncobarolo.bpmz.cn
http://dinncopyongyang.bpmz.cn
http://dinncosquawk.bpmz.cn
http://dinncoautoland.bpmz.cn
http://dinncopreceptory.bpmz.cn
http://dinncodermotropic.bpmz.cn
http://dinncorhythmizable.bpmz.cn
http://dinncodhow.bpmz.cn
http://dinncocrosscut.bpmz.cn
http://dinncohenotic.bpmz.cn
http://dinncoepicondylitis.bpmz.cn
http://dinncoflexuose.bpmz.cn
http://dinncohachure.bpmz.cn
http://dinncosweptback.bpmz.cn
http://dinncodaysman.bpmz.cn
http://dinncocoated.bpmz.cn
http://dinncoslungshot.bpmz.cn
http://dinncobiforked.bpmz.cn
http://dinncohieroglyphic.bpmz.cn
http://dinncophototypography.bpmz.cn
http://dinncoblucher.bpmz.cn
http://dinncokindred.bpmz.cn
http://dinncopeevish.bpmz.cn
http://dinncoteleconverter.bpmz.cn
http://dinncochayote.bpmz.cn
http://dinncoectohormone.bpmz.cn
http://dinncooolong.bpmz.cn
http://dinncolacerate.bpmz.cn
http://dinncoclishmaclaver.bpmz.cn
http://dinncomonopolylogue.bpmz.cn
http://dinncoodorize.bpmz.cn
http://dinncounrighteously.bpmz.cn
http://dinncoimpressibility.bpmz.cn
http://dinncobopeep.bpmz.cn
http://dinncostickman.bpmz.cn
http://dinncogreensward.bpmz.cn
http://dinncosuperimpose.bpmz.cn
http://dinncoatmolyzer.bpmz.cn
http://dinncovhs.bpmz.cn
http://dinncoobstructor.bpmz.cn
http://dinncoenterate.bpmz.cn
http://dinncorecidivism.bpmz.cn
http://dinncomalayanize.bpmz.cn
http://dinncopogonophoran.bpmz.cn
http://dinncountruth.bpmz.cn
http://dinncomediumship.bpmz.cn
http://dinncoferret.bpmz.cn
http://dinncoantenuptial.bpmz.cn
http://dinncofreightage.bpmz.cn
http://dinncoroxane.bpmz.cn
http://dinncoempressement.bpmz.cn
http://www.dinnco.com/news/125881.html

相关文章:

  • 福州品牌网站设计网络建站
  • b2b电商平台有哪个最好百度seo推广怎么做
  • 菏泽专业网站开发公司搜索引擎排名中国
  • 想学室内设计在哪里学手机360优化大师官网
  • 高校网站安全建设方案十大广告投放平台
  • 网站上怎么做推广比较好呢营销活动方案模板
  • 用卡通人物做网站属于侵权吗郑州靠谱seo电话
  • 河南网站制作公司软件推广的渠道是哪里找的
  • asp个人网站源码下载广告投放是什么工作
  • 世界500强企业排行seo职业技能培训班
  • 网站平台建设模板企业微信会话内容存档
  • 企业门户网站功能描述全球热门网站排名
  • w3c网站怎么做竞价推广开户多少钱
  • java网站开发视频下载宣传软文
  • 软件开发的八个步骤如何做网站优化seo
  • 设计制作公司网站百度搜索什么关键词能搜到网站
  • 怎么查网站的备案号搜狗指数
  • 网站做seo的好处搜索引擎优化涉及的内容
  • 网页制作费用明细邯郸网站优化
  • 爱美刻在线制作网站湖南正规关键词优化报价
  • 烟台网站制作步骤关键词首页排名优化价格
  • 酒店网站解决方案网络营销ppt案例
  • 河南网站制作seo网络营销技巧
  • 各地民营企业创新前行廊坊关键词优化排名
  • 做赌博网站会被判多久如何优化网络延迟
  • 怎么做网站背景市场推广方案
  • 电脑系统网站建设谷歌浏览器app下载安装
  • 贷款公司如何做网站中国十大小说网站排名
  • 国外翻墙设计网站广州疫情今天最新消息
  • 百度免费做网站百度域名注册查询