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

wordpress获取文章第一个图片搜狗搜索引擎优化论文

wordpress获取文章第一个图片,搜狗搜索引擎优化论文,呼伦贝尔网站制作,质量最好的网购平台场景: 1、项目内加载了h5页面的七鱼客服,(相当于webview 加载help.html) 2、应用上架要求必须有授权提示弹窗 解决思路 1、客服的h5 页面在跳转时候,给父层webview 发消息,注入一段拦截代码,监听到有上传操作时候&…

场景:
1、项目内加载了h5页面的七鱼客服,(相当于webview 加载help.html)
2、应用上架要求必须有授权提示弹窗
解决思路
1、客服的h5 页面在跳转时候,给父层webview 发消息,注入一段拦截代码,监听到有上传操作时候,调用原生的授权提示,下次点击时候就可以根据返回的授权信息判断是否要执行input file 的click事件 。

注:项目用uniapp 写的,自己写了一套webview 和 h5 通信的逻辑,文中$abAct(‘getImagePermission’, ‘’, function(err,succ) {}) ; p o s t M e s s a g e ( " k e f u I n j e c t " ) ; 都是通信交互方法,其中 postMessage("kefuInject");都是通信交互方法,其中 postMessage("kefuInject");都是通信交互方法,其中abAc是有回调的。可以自行处理这块逻辑

客服的html
help.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /></head><style>#YSF-BTN-HOLDER {display: none;}</style><body></body><script src="这里是引入我通信的js代码"></script><script type="text/javascript">let kefuCode = query("kefuCode");let url = "";let plt = '"https://qiyukf.com/script/';if (location.href.startsWith("https")) {url = "https://qiyukf.com/script/";} else {url = "http://qiyukf.com/script/";}if (!kefuCode || kefuCode == 0) {url = url + "七鱼客服的key" + ".js";} else {url = url + kefuCode + ".js";}url = url + "?subdomain=1";console.log("加载客服js", url);var script = document.createElement("script");script.type = "text/javascript";script.src = url;var flage = false;script.onload = function () {// 加载完成后的操作initKefu();};document.body.appendChild(script);window.onload = function () {initKefu();};function initKefu() {if (flage) {return;}flage = true;ysf.on({onload: function () {var data = [];try {data = query("data")? JSON.parse(decodeURIComponent(query("data"))): [];if (data.length > 1 && data[1].url) {ysf("product", {show: 1, // 1为打开, 其他参数为隐藏(包括非零元素)title: data[1].title,desc: data[1].desc,picture: data[1].picture,note: data[1].note,url: data[1].url,});data.splice(1, 1);}} catch (e) {console.error(e);}var uid = query("uid") ? query("uid") : GetRandomNum(10000, 999999);console.log("uiduiduiduid", uid);var cfg = {uid: uid,name: query("name"),mobile: query("mobile"),data: JSON.stringify(data),success: function () {// 成功回调console.log(ysf.url());let ysfurl = ysf.url();if (data[0].templateId) {ysfurl = ysf.url() + "&templateId=" + data[0].templateId;}console.log(uniReady);try {if (ab_.uniApp && query("newHelp")) {uniReady(() => {//这里是调用获取授权的方法,是自己封装的 webview 和 h5 的通信方式,可自行处理$postMessage("kefuInject");location.href = ysfurl;});return;}} catch (e) {console.log(e);}location.href = ysfurl;},error: function () {// 错误回调location.href = ysf.url();},};// console.log(cfg)ysf.config(cfg);},});}function GetRandomNum(Min, Max) {var Range = Max - Min;var Rand = Math.random();return Min + Math.round(Rand * Range);}function query(name) {var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");var r = window.location.search.substr(1).match(reg);if (r != null) {return decodeURIComponent(r[2]);}return null;}</script>
</html>

注入js的代码
sdk.ts

 kefuInject(v: string, tag?: any, source?: any, proj?: any) {proj = proj || vueSelf.$proj(tag, source)// #ifdef APPsetTimeout(() => {console.log('kefuInject', proj)// if(false) {//     return// }proj.evalJs(`window.permissionApply = false// window.οnlοad=function(){//  alert('0 οnlοad')loadJS( 'https://p2.dev.yiyiny.com/plt-demo/static/open.plt.0.1.js?v=2',function(){// ab_.vconsoled = true//加载,并执行回调函数injectKefuPermissions()//  alert('2injectKefuPermissions' )});// }function injectKefuPermissions() {var videoInput = document.querySelector('input[accept="video/*"]')var imageInput =  document.querySelector('input[accept="image/*"]')if (!imageInput) {setTimeout(injectKefuPermissions, 500)}else{var imageInputClick = function(e) {saveImagePermissionApply(imageInput,e);}var videoInputClick = function(e) {saveImagePermissionApply(videoInput,e);}imageInput.addEventListener('click', imageInputClick);videoInput.addEventListener('click', videoInputClick);}}function saveImagePermissionApply(el,e){// alert('0' + window.permissionApply)if(!window.permissionApply){// alert('1' +window. permissionApply)e.preventDefault();uniReady(function() {$abAct('getImagePermission', '', function(err,succ) {// alert('2' + succ)if(succ){window.permissionApply = trueimageInput.removeEventListener('click', imageInputClick)videoInput.removeEventListener('click', videoInputClick)el.click()}})  })}else{//  window.permissionApply = false}}function loadJS(url, callback) {var script = document.createElement('script'), fn = callback || function() {};script.type = 'text/javascript';// IEif (script.readyState) {script.onreadystatechange = function() {if (script.readyState == 'loaded'|| script.readyState == 'complete') {script.onreadystatechange = null;fn();}};} else {// 其他浏览器script.onload = function() {fn();};}script.src = url;document.getElementsByTagName('head')[0].appendChild(script);}`)}, 3000);// #endif},};

获取权限代码

SdkActs.ts

getImagePermission(v?: string, tag?: any, source?: any, proj?: any) {// proj = proj || vueSelf.$proj(tag, source);let data = {state: false,//是否原生授权denied: true,//是否提示permissionList: [{permissionName: "相机",tips: "允许应用打开摄像头",androidPermission: "android.permission.CAMERA",},{permissionName: "相册",tips: "允许应用读取存储卡上的照片、媒体内容和文件",androidPermission: "android.permission.READ_EXTERNAL_STORAGE",},],};SdkActs.userPermissions(JSON.stringify(data), null, null, null,function (res) {console.log("getImagePermission res", res);// console.log("getImagePermission back", back);// back(res === 1 ? true : false)vueSelf.$callback('abAct.getImagePermission', null, res == 1 ? true : false);});return true},_androidPermissions: <any>undefined,//此为48小时授权和提示的代码userPermissions(v?: string, tag?: any, source?: any, proj?: any, back?: any) {proj = proj || vueSelf.$proj(tag, source);// #ifdef APPtry {if (axCc.info.platform == "android") {let permissionDs: any[] = JSON.parse(v);let permissionState = false;let permissionDenied = "";if (!Array.isArray(permissionDs)) {// @ts-ignoreif (Array.isArray(permissionDs.permissionList)) {// @ts-ignorepermissionState = permissionDs.state;// @ts-ignorepermissionDenied = permissionDs.denied;// @ts-ignorepermissionDs = permissionDs.permissionList;} else {permissionDs = [permissionDs];}}let androidPermissionsDirty = false;let androidPermissions = SdkActs._androidPermissions;if (!androidPermissions) {androidPermissions = axCc.getStorage("_androidPermissions");if (typeof androidPermissions !== "object") {androidPermissions = {};}SdkActs._androidPermissions = androidPermissions;}let mainActivity: any;let nowTime: any;let deniedTime: any;let deniedPermissions;let requestPermissions;let nonePermissions = false;let tips = "";for (let i = permissionDs.length - 1; i >= 0; i--) {let permissionD = permissionDs[i];let permission = permissionD.androidPermission;let permissionV = androidPermissions[permission];if (permissionV === 1) {permissionDs.splice(i, 1);} else {mainActivity || (mainActivity = plus.android.runtimeMainActivity());if (mainActivity.checkSelfPermission(permission) === 0) {permissionDs.splice(i, 1);androidPermissionsDirty = true;androidPermissions[permission] = 1;} else {// 暂停二次授权间隔48小时if (!deniedTime) {nowTime = new Date().getTime();deniedTime = nowTime - 48 * 24 * 3600;}if (permissionV > deniedTime) {// 暂停二次授权(deniedPermissions || (deniedPermissions = [])).push(permissionD);} else {if (permissionD.tips && !permissionState) {// 可授权提示tips = permissionD.tips + tips;(requestPermissions || (requestPermissions = [])).push(permission);} else {nonePermissions = true;}}}}}if (androidPermissionsDirty) {// 权限记录androidPermissionsDirty = false;axCc.saveStorage("_androidPermissions", androidPermissions);}if (nonePermissions) {// 没有授权back? back(-1): vueSelf.$callback("abAct.userPermissions", proj, -1);return;} else if (deniedPermissions) {// 暂停二次授权if (permissionDenied) {uni.showModal({title: "提示",content: "没有权限",showCancel: false,complete(result) {back? back(-2): vueSelf.$callback("abAct.userPermissions", proj, -2);},});return true;}back? back(-2): vueSelf.$callback("abAct.userPermissions", proj, -2);return;} else if (tips) {uni.showModal({title: "权限申请",content: tips,success(res) {if (res.confirm) {// https://www.html5plus.org/doc/zh_cn/android.html#plus.android.requestPermissionsplus.android.requestPermissions(requestPermissions, (e) => {for (let i = e.deniedAlways.length - 1; i >= 0; i--) {androidPermissions[e.deniedAlways[i]] = nowTime;}for (let i = e.deniedPresent.length - 1; i >= 0; i--) {androidPermissions[e.deniedPresent[i]] = nowTime;}for (let i = e.granted.length - 1; i >= 0; i--) {androidPermissions[e.granted[i]] = 1;}axCc.saveStorage("_androidPermissions", androidPermissions);if (e.deniedAlways.length > 0) {//权限被永久拒绝// 弹出提示框解释为何需要定位权限,引导用户打开设置页面开启back? back(-2): vueSelf.$callback("abAct.userPermissions", proj, -2);} else if (e.deniedPresent.length > 0 ||e.granted.length <= 0) {//权限被临时拒绝// 弹出提示框解释为何需要定位权限,可再次调用plus.android.requestPermissions申请权限back? back(-1): vueSelf.$callback("abAct.userPermissions", proj, -1);} else {//权限被允许//调用依赖获取定位权限的代码back? back(1): vueSelf.$callback("abAct.userPermissions", proj, 1);}});} else if (res.cancel) {// 拒接授权back? back(0): vueSelf.$callback("abAct.userPermissions", proj, 0);}},});return true;}back ? back(1) : vueSelf.$callback("abAct.userPermissions", proj, 1);return;}} catch (e) {console.error(e);}// #endifback ? back(1) : vueSelf.$callback("abAct.userPermissions", proj, 1);},
http://www.ds6.com.cn/news/64878.html

相关文章:

  • 小企业网站建设菌算百度竞价最低点击一次多少钱
  • 怎么做挖矿网站杭州关键词自动排名
  • 坪山网站设计的公司2022年大事热点新闻
  • 创意做美食视频网站seowhy教研室
  • 宜昌做网站公司有哪些网站域名注册费用
  • 网页商城设计商城网站设计案例佛山抖音seo
  • 如何做国外网站彩票的推广北京搜索引擎关键词优化
  • 广州金山大厦 网站建设海南百度竞价排名
  • 营销导向企业网站建设福州关键词搜索排名
  • 新华路街道网站建设网推平台
  • 网站建设与网络编辑综合实训课程指导手册pdf重庆seo代理计费
  • 浙江龙游疫情最新消息seo关键词优化方法
  • asp的公司网站南宁网站推广大全
  • python线上编辑器定西seo排名
  • 建设交流网站域名访问网站怎么进入
  • wordpress的tb show苏州优化收费
  • 安徽免费网站制作免费网站推广工具
  • 企业制作网站公司惠州seo排名公司
  • 南阳卧龙区高端网站建设价格seo零基础教学视频
  • 网站建设 柳州济宁seo推广
  • discuz和wordpress并发杭州网站优化效果
  • 寻找做网站广告联盟哪个比较好
  • 宁远县做网站的网站设计与制作公司
  • 2016年两学一做教育网站百度推广产品
  • 做网站建设的电销河北seo网络优化培训
  • 网站平台推广语录网站设计制作培训
  • 公司网站运营公司排名百度广告优化
  • 永久免费网站怎么创建湖南省人民政府官网
  • 网站注册人查询优秀网页设计作品
  • 娶妻为什么不娶外贸女seo工作流程