分类 WEB前端 下的文章

figma绘制svg上传iconfont实心问题解决

figma软件中绘制好图标导出为svg后,上传到iconfont后填充不对,如图: ![figma-svg.png](https://felixway.cn/usr/uploads/2024/08/1687542487.png) 经查询信息了解这是因为figma的填充模式为“even-odd”,iconfont识别不了这种格式。可以使用插件“Fill Rule Editor”对填充模式进行修改,插件介绍见:https://www.figma.com/community/plugin/771155994770327940/fill-rule-editor 安装“Fill Rule Editor”插件后并打开,选中图标内容(不是选中画板),此时插件面板会显示出图形各部分的填充模式,蓝色代表“...

继续阅读 »

网站如何检测阻止用户打开开发者工具(F12)面板

**推荐disable-devtool库:** https://github.com/theajack/disable-devtool https://theajack.github.io/disable-devtool/ **disable-devtool** 可以禁用所有一切可以进入开发者工具的方法,防止通过开发者工具进行的 ‘采集分析、数据或代码搬运’。 该库有以下特性: 1、支持可配置是否禁用右键菜单 2、禁用 f12 和 ctrl+shift+i 快捷键 3、支持识别从浏览器菜单栏打开开发者工具并关闭当前页面 4、开发者可以绕过禁用 (url参数使用tk配合md5加密) 5、支持几乎所有浏览器 6、高度可配置 7、使用极简、体积小巧 (仅6kb) 8、支持np...

继续阅读 »

uniapp H5唤起手机地图软件

**uniapp html5页面唤起手机地图app** ```html 地点 地址详情 去这里 ``` ```javascript //选择打开的地图 const openMapHandle = () => { // //点击跳转地图 // uni.openLocation({ // latitude: latitude.value / 1, // longitude: longitude.value / 1, // name: name.value, // address: addr.value, // }) uni.showActionSheet({ title: '请选择系统中已安装的地图应用导航', it...

继续阅读 »

在VS Code中配置使用通义灵码插件

**“通义灵码”**是一款基于阿里云通义代码大模型打造的智能编码助手产品,产品于2023年10月31日云栖大会上,正式对外发布。 #### “通义灵码”主要功能: 核心使用场景:代码智能生成和研发智能问答。 1. 行级/函数级实时续写:根据当前语法和跨文件的代码上下文,实时生成行、函数建议代码。 1. 自然语言生成代码:通过自然语言描述想要的功能,可直接在编辑器区生成代码,编码心流不间断。 1. 单元测试生成:支持根据 JUnit、Mockito、Spring Test、unit test、pytest 等框架生成单元测试。 1. 代码注释生成:一键生成方法注释及行间注释,节省写代码注释的时间,并能够有效提升代码可读性。 在 Visual Studio Code (VSCode)...

继续阅读 »

uniapp vue3小程序版本更新升级提示

在uni-app开发过程中,应用的版本更新是一个常见的需求。当开发者发布了新版本的小程序后,希望用户在下一次打开旧版小程序时能够收到更新提示,引导用户更新到最新版本。本文介绍了基于uniapp vue3开发的微信小程序迭代更新版本后,用户使用小程序时提示其升级版本。 **版本说明:** 基于uniapp vue3 ts **实现方式:** 在uniapp小程序的App.vue文件中,在onLaunch或onShow生命周期钩子中检测版本更新,我是在onLaunch里面判断的。代码如下: ```javascript onLaunch: function () { // uni.hideTabBar() console.log('App Launch') const ...

继续阅读 »

uniapp getBLEDeviceCharacteristics 10004 苹果IOS

**异常背景:**基于uni-app低功耗蓝牙(BLE)API实现蓝牙通讯,android真机测试getBLEDeviceCharacteristics获取特征值成功,同样代码苹果ios真机获取getBLEDeviceCharacteristics失败并返回10004错误 **分析与解决思路:** **1、**注意uuid大小写问题,如果uuid是小写的,请全部改为大写的试试。 **2、**如果首次连接OK,重连失败,看其它博主分享过: 个人猜测微信会缓存当前设备的所有 serviceId 和对应的 characteristicId ,当我们调用断开连接(wx.closeBLEConnection)或者异常断开后,会清空缓存列表。而发送数据(wx.writeBLECharacteristi...

继续阅读 »

uni-app vue3引入jsencrypt实现加密解密(PHP后端)

uniapp vue3版本引入jsencrypt实现加密解密,uniapp 引入jsencrypt实现前端加密及PHP后端解密 ### uniapp中引入使用示例: ```javascript import JSEncrypt from '/utils/jsencrypt.js' const publicKey =`公钥`; const encryptor = new JSEncrypt(); encryptor.setPublicKey(publicKey)//encryptor.setPrivateKey(RSA的私钥); let passwordEncry = encryptor.encrypt('123456');//encryptor.decrypt(解密的内容); ...

继续阅读 »

uview u-picker组件 rpx单位bug

当uview2.0 main.js文件中配置uni.$u.config.unit = 'rpx' 时,在微信小程序中给 u-picker 组件属性itemHeight赋值为 90或任意值时,存在height高度均渲染为34px的问题,初步发现的原因为: > 微信 picker-view 组件的属性 indicator-style,设置的height值 只允许 px 单位,全局设置rpx单位后,会自动变成 44rpx,导致失效,微信默认值为 34px,所以无论你设置的height 是多少,最终都会被微信强制修改为 34px, 如果将 itemHeight 设置为 100rpx,picker-view 的 style 中, height 值是通过 行数×高度,结果NaN **目前解决方案:** ...

继续阅读 »

css ~ , + >

**A~B (波浪号)** 选择前面有A元素的所有B标签 为相同父元素中位于A标签后的所有B元素设置样式 两种元素必须拥有相回的父元素,但是B不必真接紧随A出现 **A>B (大于号)** 是CSS3特有选择器,表示选则A元素的子元素中所有B元素 与AB的区别 A B 选择所有后代元素,但是A>B 只选择一代 **A,B (逗号)** 同时选择A B 两个类,对其应用相同的CSS样式 **A+B(加号)相邻兄弟选择器** 选择紧接在另一个元素后的元素,二者有相同的父元素 例:增加紧接在h1元秦后出现的段落的边距

继续阅读 »

ajax获取Response Headers响应头信息

**ajax type HEAD获取Response Headers信息,ajax通过Response Headers头信息获取服务端时间** **常用场景:**基于服务器端标准时间做倒计时业务使用。 PS:常见开发人员使用本地时间做倒计时参考时间,在客户端时间不准确时会产生歧义或bug。 **示例如下:** ```javascript //jquery引用注意,ajax done需要1.5版本之后支持 $.ajax({ url: "//lab.fity.cn/time/time.gif", type: "HEAD" }).done(function(data, textStatus, jqXHR) { oncallback(jqXHR) }).fail(funct...

继续阅读 »

IM语音消息amr文件web网页播放

#### 网页_h5页面播放amr音频编码文件 最近部门在迭代升级IM即时通讯工具过程中,规划新增语音发送,通过综合评估音频文件编码格式定为amr(amr格式文件体积很小,更有利于多端传输。微信语音格式也是该格式)。 音频文件编码格式确定后,主要是解决在网页端的播放(及录制)问题,通过对比选择使用:benz-amr-recorder组件支持amr文件的播放。 benz-amr-recorder:纯前端解码、播放、录音、编码 AMR 音频,无须服务器支持,基于 amr.js 和 RecorderJs。 **参考:** https://github.com/BenzLeung/benz-amr-recorder 注意:由于使用了 amr.js 做编码和解码,因此 js 文件(压...

继续阅读 »