整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

微信小程序学习笔记_02模板与配置

XML模板

WXML(WeiXin Markup Language)是小程序框架设计的一套标签语言,用来构建小程序页面的结构,其作用类似于网页开发中的 HTML。

WXML 和 HTML 的区别:

  • 标签名称不同
      • HTML (div, span, img, a)
      • WXML(view, text, image, navigator)
  • 属性节点不同
      • 超链接

  • 提供了类似于 Vue 中的模板语法
      • 数据绑定
      • 列表渲染
      • 条件渲染

WXSS样式

WXSS (WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式,类似于网页开发中的 CSS。

WXSS 和 CSS 的区别:

  • 新增了 rpx 尺寸单位
    • CSS 中需要手动进行像素单位换算,例如 rem
    • WXSS 在底层支持新的尺寸单位 rpx,在不同大小的屏幕上小程序会自动进行换算
  • 提供了全局的样式和局部样式
    • 项目根目录中的 app.wxss 会作用于所有小程序页面
    • 局部页面的 .wxss 样式仅对当前页面生效
  • WXSS 仅支持部分 CSS 选择器
    • .class 和 #id
    • element
    • 并集选择器、后代选择器
    • ::after 和 ::before 等伪类选择器

小程序的宿主环境

  1. 什么是宿主环境

宿主环境(host environment)指的是程序运行所必须的依赖环境。例如:

Android 系统和 iOS 系统是两个不同的宿主环境。安卓版的微信 App 是不能在 iOS 环境下运行的,所以,Android 是安卓软件的宿主环境,脱离了宿主环境的软件是没有任何意义的!

  1. 小程序的宿主环境

手机微信是小程序的宿主环境,如图所示:

小程序借助宿主环境提供的能力,可以完成许多普通网页无法完成的功能,例如:

微信扫码、微信支付、微信登录、地理定位、etc…

组件

  1. 小程序中组件的分类

小程序中的组件也是由宿主环境提供的,开发者可以基于组件快速搭建出漂亮的页面结构。官方把小程序的组件分为了 9 大类,分别是:

  • 视图容器
  • 基础内容
  • 表单组件
  • 导航组件
  • 媒体组件
  • map 地图组件
  • canvas 画布组件
  • 开放能力
  • 无障碍访问
  1. 常用的视图容器类组件
  • view
    • 普通视图区域
    • 类似于 HTML 中的 div,是一个块级元素
    • 常用来实现页面的布局效果
  • scroll-view
    • 可滚动的视图区域
    • 常用来实现滚动列表效果
  • swiper 和 swiper-item
    • 轮播图容器组件 和 轮播图 item 组件
  1. view 组件的基本使用

实现如图的 flex 横向布局效果:

  1. scroll-view 组件的基本使用

实现如图的纵向滚动效果:

  1. swiper 和 swiper-item 组件的基本使用

实现如图的轮播图效果:

  1. swiper 组件的常用属性

属性

类型

默认值

说明

indicator-dots

boolean

false

是否显示面板指示点

indicator-color

color

rgba(0, 0, 0, .3)

指示点颜色

indicator-active-color

color

#000000

当前选中的指示点颜色

autoplay

boolean

false

是否自动切换

interval

number

5000

自动切换时间间隔

circular

boolean

false

是否采用衔接滑动

  1. 常用的基础内容组件
  • text
    • 文本组件
    • 类似于 HTML 中的 span 标签,是一个行内元素
  • rich-text
    • 富文本组件
    • 支持把 HTML 字符串渲染为 WXML 结构
  1. text 组件的基本使用

通过 text 组件的 selectable 属性,实现长按选中文本内容的效果:

  1. rich-text 组件的基本使用

通过 rich-text 组件的 nodes 属性节点,把 HTML 字符串渲染为对应的 UI 结构:

  1. 其它常用组件
  • button
    • 按钮组件
    • 功能比 HTML 中的 button 按钮丰富
    • 通过 open-type 属性可以调用微信提供的各种功能(客服、转发、获取用户授权、获取用户信息等)
  • image
    • 图片组件
    • image 组件默认宽度约 300px、高度约 240px
  • navigator(后面课程会专门讲解)
    • 页面导航组件
    • 类似于 HTML 中的 a 链接
  1. button 按钮的基本使用

  1. image 组件的基本使用

  1. image 组件的 mode 属性

image 组件的 mode 属性用来指定图片的裁剪和缩放模式,常用的 mode 属性值如下:

mode 值

说明

scaleToFill

(默认值)缩放模式,不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素

aspectFit

缩放模式,保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。

aspectFill

缩放模式,保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。

widthFix

缩放模式,宽度不变,高度自动变化,保持原图宽高比不变

heightFix

缩放模式,高度不变,宽度自动变化,保持原图宽高比不变

API

小程序 API 概述

小程序中的 API 是由宿主环境提供的,通过这些丰富的小程序 API,开发者可以方便的调用微信提供的能力,例如:获取用户信息、本地存储、支付功能等。

小程序 API 的 3 大分类

小程序官方把 API 分为了如下 3 大类:

  1. 事件监听 API
    • 特点:以 on 开头,用来监听某些事件的触发
    • 举例:wx.onWindowResize(function callback) 监听窗口尺寸变化的事件
  1. 同步 API
    • 特点1:以 Sync 结尾的 API 都是同步 API
    • 特点2:同步 API 的执行结果,可以通过函数返回值直接获取,如果执行出错会抛出异常
    • 举例:wx.setStorageSync('key', 'value') 向本地存储中写入内容
  1. 异步 API
    • 特点:类似于 jQuery 中的 $.ajax(options) 函数,需要通过 success、fail、complete 接收调用的结果
    • 举例:wx.request() 发起网络数据请求,通过 success 回调函数接收数据

WXML 模板语法

数据绑定

  1. 数据绑定的基本原则
    • 在 data 中定义数据
    • 在 WXML 中使用数据
  1. 在 data 中定义页面的数据

在页面对应的 .js 文件中,把数据定义到 data 对象中即可:

  1. Mustache 语法的格式

把data中的数据绑定到页面中渲染,使用 Mustache 语法(双大括号)将变量包起来即可。语法格式为:

  1. Mustache 语法的应用场景

Mustache 语法的主要应用场景如下:

  • 绑定内容
  • 绑定属性
  • 运算(三元运算、算术运算等)
  1. 动态绑定内容

页面的数据如下:

页面的结构如下:

  1. 动态绑定属性

页面的数据如下:

页面的结构如下:

  1. 三元运算

页面的数据如下:

页面的结构如下:

  1. 算数运算

页面的数据如下:

页面的结构如下:

事件绑定

  1. 什么是事件

事件是渲染层到逻辑层的通讯方式。通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务的处理。

  1. 小程序中常用的事件

类型

绑定方式

事件描述

tap

bindtap 或 bind:tap

手指触摸后马上离开,类似于 HTML 中的 click 事件

input

bindinput 或 bind:input

文本框的输入事件

change

bindchange 或 bind:change

状态改变时触发

  1. 事件对象的属性列表

当事件回调触发的时候,会收到一个事件对象 event,它的详细属性如下表所示:

属性

类型

说明

type

String

事件类型

timeStamp

Integer

页面打开到触发事件所经过的毫秒数

target

Object

触发事件的组件的一些属性值集合

currentTarget

Object

当前组件的一些属性值集合

detail

Object

额外的信息

touches

Array

触摸事件,当前停留在屏幕中的触摸点信息的数组

changedTouches

Array

触摸事件,当前变化的触摸点信息的数组

  1. target 和 currentTarget 的区别

target 是触发该事件的源头组件,而 currentTarget 则是当前事件所绑定的组件。举例如下:

点击内部的按钮时,点击事件以冒泡的方式向外扩散,也会触发外层 view 的 tap 事件处理函数。

此时,对于外层的 view 来说:

  • e.target 指向的是触发事件的源头组件,因此,e.target 是内部的按钮组件
  • e.currentTarget 指向的是当前正在触发事件的那个组件,因此,e.currentTarget 是当前的 view 组件
  1. bindtap 的语法格式

在小程序中,不存在 HTML 中的 onclick 鼠标点击事件,而是通过 tap 事件来响应用户的触摸行为。

  • 通过 bindtap,可以为组件绑定 tap 触摸事件,语法如下:

  • 在页面的 .js 文件中定义对应的事件处理函数,事件参数通过形参 event(一般简写成 e) 来接收:

  1. 在事件处理函数中为 data 中的数据赋值

通过调用 this.setData(dataObject) 方法,可以给页面 data 中的数据重新赋值,示例如下:

  1. 事件传参

小程序中的事件传参比较特殊,不能在绑定事件的同时为事件处理函数传递参数。例如,下面的代码将不能正常工作:

因为小程序会把 bindtap 的属性值,统一当作事件名称来处理,相当于要调用一个名称为 btnHandler(123) 的事件处理函数。

可以为组件提供 data-* 自定义属性传参,其中 * 代表的是参数的名字,示例代码如下:

最终:

  • info 会被解析为参数的名字
  • 数值 2 会被解析为参数的值

在事件处理函数中,通过 event.target.dataset.参数名 即可获取到具体参数的值,示例代码如下:

  1. bindinput 的语法格式

在小程序中,通过 input 事件来响应文本框的输入事件,语法格式如下:

  • 通过 bindinput,可以为文本框绑定输入事件:

  • 在页面的 .js 文件中定义事件处理函数:

  1. 实现文本框和 data 之间的数据同步

实现步骤:

  • 定义数据
  • 渲染结构
  • 美化样式
  • 绑定 input 事件处理函数

定义数据:

渲染结构:

美化样式:

绑定 input 事件处理函数:

条件渲染

  1. wx:if

小程序中,使用 wx:if="{{condition}}" 来判断是否需要渲染该代码块:

也可以用 wx:elif 和 wx:else 来添加 else 判断:

  1. 结合 使用 wx:if

如果要一次性控制多个组件的展示与隐藏,可以使用一个 标签将多个组件包装起来,并在 标签上使用 wx:if 控制属性,示例如下:

注意: 并不是一个组件,它只是一个包裹性质的容器,不会在页面中做任何渲染。

  1. hidden

在小程序中,直接使用 hidden="{{ condition }}" 也能控制元素的显示与隐藏:

  1. wx:if 与 hidden 的对比
  • 运行方式不同
    • wx:if 以动态创建和移除元素的方式,控制元素的展示与隐藏
    • hidden 以切换样式的方式(display: none/block;),控制元素的显示与隐藏
  • 使用建议
    • 频繁切换时,建议使用 hidden
    • 控制条件复杂时,建议使用 wx:if 搭配 wx:elif、wx:else 进行展示与隐藏的切换

列表渲染

  1. wx:for

通过 wx:for 可以根据指定的数组,循环渲染重复的组件结构,语法示例如下:

默认情况下,当前循环项的索引用 index 表示;当前循环项用 item 表示。

  1. 手动指定索引和当前项的变量名*
  • 使用 wx:for-index 可以指定当前循环项的索引的变量名
  • 使用 wx:for-item 可以指定当前项的变量名

示例代码如下:

  1. wx:key 的使用

类似于 Vue 列表渲染中的 :key,小程序在实现列表渲染时,也建议为渲染出来的列表项指定唯一的 key 值,从而提高渲染的效率,示例代码如下:

WXSS模板样式

介绍

  1. 什么是 WXSS

WXSS (WeiXin Style Sheets)是一套样式语言,用于美化 WXML 的组件样式,类似于网页开发中的 CSS。

  1. WXSS 和 CSS 的关系

WXSS 具有 CSS 大部分特性,同时,WXSS 还对 CSS 进行了扩充以及修改,以适应微信小程序的开发。

与 CSS 相比,WXSS 扩展的特性有:

  • rpx 尺寸单位
  • @import 样式导入

rpx

  1. 什么是 rpx 尺寸单位

rpx(responsive pixel)是微信小程序独有的,用来解决屏适配的尺寸单位。

  1. rpx 的实现原理

rpx 的实现原理非常简单:鉴于不同设备屏幕的大小不同,为了实现屏幕的自动适配,rpx 把所有设备的屏幕,在宽度上等分为 750 份(即:当前屏幕的总宽度为 750rpx)。

  • 在较小的设备上,1rpx 所代表的宽度较小
  • 在较大的设备上,1rpx 所代表的宽度较大

小程序在不同设备上运行的时候,会自动把 rpx 的样式单位换算成对应的像素单位来渲染,从而实现屏幕适配。

  1. rpx 与 px 之间的单位换算*

在 iPhone6 上,屏幕宽度为375px,共有 750 个物理像素,等分为 750rpx。则:

750rpx = 375px = 750 物理像素

1rpx = 0.5px = 1物理像素

设备

rpx换算px (屏幕宽度/750)

px换算rpx (750/屏幕宽度)

iPhone5

1rpx = 0.42px

1px = 2.34rpx

iPhone6

1rpx = 0.5px

1px = 2rpx

iPhone6 Plus

1rpx = 0.552px

1px = 1.81rpx

官方建议:开发微信小程序时,设计师可以用 iPhone6 作为视觉稿的标准。

开发举例:在 iPhone6 上如果要绘制宽100px,高20px的盒子,换算成rpx单位,宽高分别为 200rpx 和 40rpx。

样式导入

  1. 什么是样式导入

使用 WXSS 提供的 @import 语法,可以导入外联的样式表。

  1. @import 的语法格式

@import 后跟需要导入的外联样式表的相对路径,用 ; 表示语句结束。示例如下:

全局样式和局部样式

  1. 全局样式

定义在 app.wxss 中的样式为全局样式,作用于每一个页面。

  1. 局部样式

在页面的 .wxss 文件中定义的样式为局部样式,只作用于当前页面。

注意:

当局部样式和全局样式冲突时,根据就近原则,局部样式会覆盖全局样式

当局部样式的权重大于或等于全局样式的权重时,才会覆盖全局的样式

全局配置

全局配置文件及常用的配置项

小程序根目录下的 app.json 文件是小程序的全局配置文件。常用的配置项如下:

  • pages

记录当前小程序所有页面的存放路径

  • window

全局设置小程序窗口的外观

  • tabBar

设置小程序底部的 tabBar 效果

  • style

是否启用新版的组件样式

window

  1. 小程序窗口的组成部分

  1. 了解 window 节点常用的配置项

属性名

类型

默认值

说明

navigationBarTitleText

String

字符串

导航栏标题文字内容

navigationBarBackgroundColor

HexColor

#000000

导航栏背景颜色,如 #000000

navigationBarTextStyle

String

white

导航栏标题颜色,仅支持 black / white

backgroundColor

HexColor

#ffffff

窗口的背景色

backgroundTextStyle

String

dark

下拉 loading 的样式,仅支持 dark / light

enablePullDownRefresh

Boolean

false

是否全局开启下拉刷新

onReachBottomDistance

Number

50

页面上拉触底事件触发时距页面底部距离,单位为px

  1. 设置导航栏的标题

设置步骤:app.json -> window -> navigationBarTitleText

需求:把导航栏上的标题,从默认的 “WeChat”修改为“黑马程序员”,效果如图所示:

  1. 设置导航栏的背景色

设置步骤:app.json -> window -> navigationBarBackgroundColor

需求:把导航栏标题的背景色,从默认的 #fff 修改为 #2b4b6b ,效果如图所示:

  1. 设置导航栏的标题颜色

设置步骤:app.json -> window -> navigationBarTextStyle

需求:把导航栏上的标题颜色,从默认的 black 修改为 white ,效果如图所示:

注意: navigationBarTextStyle 的可选值只有 black white

  1. 全局开启下拉刷新功能

概念:下拉刷新是移动端的专有名词,指的是通过手指在屏幕上的下拉滑动操作,从而重新加载页面数据的行为。

设置步骤:app.json -> window -> 把 enablePullDownRefresh 的值设置为 true

注意:在 app.json 中启用下拉刷新功能,会作用于每个小程序页面!

  1. 设置下拉刷新时窗口的背景色

当全局开启下拉刷新功能之后,默认的窗口背景为白色。如果自定义下拉刷新窗口背景色,设置步骤为: app.json -> window -> 为 backgroundColor 指定16进制的颜色值 #efefef。效果如下:

  1. 设置下拉刷新时 loading 的样式

当全局开启下拉刷新功能之后,默认窗口的 loading 样式为白色,如果要更改 loading 样式的效果,设置步骤为 app.json -> window -> 为 backgroundTextStyle 指定 dark 值。效果如下:

注意: backgroundTextStyle 的可选值只有 light dark

  1. 设置上拉触底的距离

概念:上拉触底是移动端的专有名词,通过手指在屏幕上的上拉滑动操作,从而加载更多数据的行为。

设置步骤: app.json -> window -> 为 onReachBottomDistance 设置新的数值

注意:默认距离为50px,如果没有特殊需求,建议使用默认值即可。

tabBar

  1. 什么是 tabBar

tabBar 是移动端应用常见的页面效果,用于实现多页面的快速切换。小程序中通常将其分为:

  • 底部 tabBar
  • 顶部 tabBar

注意:

tabBar中只能配置最少 2 个、最多 5 个 tab 页签

当渲染顶部 tabBar 时,不显示 icon,只显示文本

  1. tabBar 的 6 个组成部分

  1. tabBar 节点的配置项

属性

类型

必填

默认值

描述

position

String

bottom

tabBar 的位置,仅支持 bottom/top

borderStyle

String

black

tabBar 上边框的颜色,仅支持 black/white

color

HexColor


tab 上文字的默认(未选中)颜色

selectedColor

HexColor


tab 上的文字选中时的颜色

backgroundColor

HexColor


tabBar 的背景色

list

Array


tab 页签的列表,

最少 2 个最多 5 个 tab

  1. 每个 tab 项的配置选项

属性

类型

必填

描述

pagePath

String

页面路径,页面必须在 pages 中预先定义

text

String

tab 上显示的文字

iconPath

String

未选中时的图标路径;当 postion 为 top 时,不显示 icon

selectedIconPath

String

选中时的图标路径;当 postion 为 top 时,不显示 icon

页面配置

  1. 页面配置文件的作用

小程序中,每个页面都有自己的 .json 配置文件,用来对当前页面的窗口外观、页面效果等进行配置。

  1. 页面配置和全局配置的关系

小程序中,app.json 中的 window 节点,可以全局配置小程序中每个页面的窗口表现。

如果某些小程序页面想要拥有特殊的窗口表现,此时,“页面级别的 .json 配置文件”就可以实现这种需求。

注意:当页面配置与全局配置冲突时,根据就近原则,最终的效果以页面配置为准。

  1. 页面配置中常用的配置项

属性

类型

默认值

描述

navigationBarBackgroundColor

HexColor

#000000

当前页面导航栏背景颜色,如 #000000

navigationBarTextStyle

String

white

当前页面导航栏标题颜色,仅支持 black / white

navigationBarTitleText

String


当前页面导航栏标题文字内容

backgroundColor

HexColor

#ffffff

当前页面窗口的背景色

backgroundTextStyle

String

dark

当前页面下拉 loading 的样式,仅支持 dark / light

enablePullDownRefresh

Boolean

false

是否为当前页面开启下拉刷新的效果

onReachBottomDistance

Number

50

页面上拉触底事件触发时距页面底部距离,单位为 px

网络数据请求

  1. 小程序中网络数据请求的限制

出于安全性方面的考虑,小程序官方对数据接口的请求做出了如下两个限制:

  • 只能请求 HTTPS 类型的接口
  • 必须将接口的域名添加到信任列表中

  1. 配置 request 合法域名

需求描述:假设在自己的微信小程序中,希望请求 https://www.escook.cn/ 域名下的接口

配置步骤:登录微信小程序管理后台 -> 开发 -> 开发设置 -> 服务器域名 -> 修改 request 合法域名

注意事项:

  • 域名只支持 https 协议
  • 域名不能使用 IP 地址或 localhost
  • 域名必须经过 ICP 备案
  • 服务器域名一个月内最多可申请 5 次修改
  1. 发起 GET 请求

调用微信小程序提供的 wx.request() 方法,可以发起 GET 数据请求,示例代码如下

  1. 发起 POST 请求

调用微信小程序提供的 wx.request() 方法,可以发起 POST 数据请求,示例代码如下:

  1. 在页面刚加载时请求数据

在很多情况下,我们需要在页面刚加载的时候,自动请求一些初始化的数据。此时需要在页面的 onLoad 事件中调用获取数据的函数,示例代码如下:

  1. 跳过 request 合法域名校验

如果后端程序员仅仅提供了 http 协议的接口、暂时没有提供 https 协议的接口。

此时为了不耽误开发的进度,我们可以在微信开发者工具中,临时开启「开发环境不校验请求域名、TLS 版本及 HTTPS 证书」选项,跳过 request 合法域名的校验。

注意:

跳过 request 合法域名校验的选项,仅限在开发与调试阶段使用!

  1. 关于跨域和 Ajax 的说明

跨域问题只存在于基于浏览器的 Web 开发中。由于小程序的宿主环境不是浏览器,而是微信客户端,所以小程序中不存在跨域的问题

Ajax 技术的核心是依赖于浏览器中的 XMLHttpRequest 这个对象,由于小程序的宿主环境是微信客户端,所以小程序中不能叫做“发起 Ajax 请求”,而是叫做“发起网络数据请求”。


视频讲解到黑马程序员哦~

单赚佣金,这种兼职广告,大家并不陌生。一部手机、动动手指,足不出户就能轻松赚钱。“工资当日结算秒到账”等广告字眼,让不少人动了心,为什么明知刷单是诈骗还要参与?为什么被骗了还要继续刷单?

警方提醒:不要抱有侥幸心理,警惕诈骗陷阱!

典型案例

01

刷单尝到甜头,步步深入陷阱

2021年5月15日,80后男子通过直播点赞赚红包,关注了一个名为村亮商贸的微信公众号,该男子向客服提供了自己的名字、年龄和地址、支付宝收款码等信息,之后在客服的指导下,男子下载了一个App,添加了该App客服的账号,该客服向男子发放任务,一开始只是点赞做任务,完成之后会有佣金,起初男子赚了20元佣金,到后来该客服又让男子下载了另一款App做抢单刷单的任务,在客服的指导下,男子开始进行刷单,最初的时候赚了80多元,正当男子想要提现时却发现要满300元以上才能提现,客服告诉男子想要提现就必须继续刷单,该男子遂向对方提供的账户总共进行了十次转账,从最初的300元、3000元到后面的30000元50000元,转出的数额越来越大男子却没有丝毫怀疑自己已经落入骗子的刷单陷阱,总共损失共计229300元。

02

明知是陷阱仍以身犯险

5月22日,家住大箕铺的17岁女生吴某因为刷单被骗了近四千余元,令人意想不到的是,该女生明知是陷阱仍以身犯险。5月22日一大早,吴某在网上看到一条刷单赚钱的信息,通过该信息吴某很快联系上了对方,在填写了一份《在线申请入职登记表》后对方开始给吴某派单,第一单是要求吴某在某购物平台上购买一件价值83元的衣服,同时对方向吴某提供了一个微信收款码,让吴某直接扫描该二维码付款,付款成功后吴某收到了7元的佣金奖励,吴某看到真的有钱可赚于是继续完成对方下发的“任务”,金额从300元、1200元、2400元直到4800元,到了4800元的时候对方仍表示吴某没有完成刷单任务不能结算,吴某觉得自己被骗了遂报警。事后吴某表示:“在转账1200元的时候我就意识到自己被骗了,但我又觉得或许真的能赚大钱呢。”抱有侥幸心理让吴某最终损失数千元。

03

加大投入,发觉被骗已为时晚矣

3月31日,大冶罗桥街道的韩女士遭遇了一场刷单骗局,当天晚上7点多钟的时候正在刷手机的韩女士突然被人拉进了一个刷单兼职赚外快的微信群,韩女士本对这些不感兴趣,当她看到群里有人说自己刷单赚了钱时有些心动了,通过扫描群里发送的二维码韩女士进入了一个聊天界面,对方自称接待人员,韩女士选了一个36元的单便开始了任务,首先向对方发过来的支付宝收款码转账了36元,对方发来一个链接,韩女士点开后里面显示“押骰子比大小”,按照对方所说的押了36元后韩女士成功提现了71元,以同样的方式韩女士陆续获得了105元、1000元的佣金。韩女士看到回报越来越大也越来越放开胆子来,按照对方所说的分别充值了5000元、25000元、12000元、20000元,可是对方始终辩称韩女士没有达到要求要继续充值,韩女士将此事告知了自己的丈夫,丈夫一听意识到被骗了赶紧报警,仅仅一晚上韩女士被骗金额共计62000元。

所有刷单都是诈骗!

不要有“轻轻松松松赚大钱”的心理!

不要有任何侥幸心理!

更不要轻易向陌生账户汇款!

如不幸被骗,请保存好聊天记录和转账记录,及时报警!

来源: 平安黄石

iOS 15/iPadOS 15 之后,移动端的 Safari 有了对扩展插件的全面支持,在各种插件的辅助之下,移动端 Safari 变得更加全面,体验也愈发接近桌面端,这对那些希望用 iPad 替代笔记本作为生产力工具的群体而言,是个极大的升级点。

如今新系统也已正式推出,Safari 插件的数量也增至一个较为可观的水平,是时候为大家推荐一些好用的插件了,下文我以 iPad 上的 Safari 为例给各位进行演示。

首先,iPad Safari 的扩展插件与桌面端的 Safari 插件不同,它其实是个 app,Safari 插件功能是在它原生 app 派生出的一部分功能。

因此我们要到 App Store 去下载 app,然后在 Safari 当中开启相关拓展插件功能。

苹果为这类 Safari 扩展插件设立了推荐专区,在「系统设置-Safari-扩展-更多扩展」中可以看到整个专区页面。

地区不同,推荐的插件内容也有所不同。

1. Momentum

这是一个启动页美化工具,设置启用之后,每次打开新的标签页时都会展示一张好看的图片作为背景,还会显示当前时间,还能设立 To Do 任务和常用网页。

免费版本会为用户每天更新一张背景图,如果想用自己相册里的图片则需要升级成付费版本。

2. AdBlock

官方放出的免费插件排行榜中,粗略算算至少有 4 成是广告拦截插件,AdBlock 作为此类工具中的老面孔,我自然也把它作为首选。

需要注意的是,此类插件一律被归为内容拦截器,开启的方式与其他插件有所不同,在域名栏左侧「大小/Aa 按键」中调用 ,点击该键就能看到内容拦截器的开关。

之所以叫内容拦截器,是因为它们拦截的不光是广告,还可以把违规网站、跟踪程序、评论等恼人的内容拦下来,还用户一个干净纯粹的页面。

实际效果中规中矩,它可以拦下部分 Banner 类广告,还有流媒体上的贴片广告,但偶尔还是会出现一些漏网之鱼。

3. Apollo for Reddit

这是个 Reddit 论坛的第三方 app,作用类似于第三方微博客户端,它们针对 Safari 开发的插件名叫 Open in Apollo,顾名思义,当它侦测到你在 Safari 浏览器上打开 Reddit 页面时,会自动跳转至 Apollo app 界面,作用简单粗暴。

4. 1Password

它也算是老牌密码储存器了,它所做的 Safari 扩展插件的功能,也就是为网站自动生成或填充对应平台账号的密码。

若你更常用苹果自带的密钥卡包,那还能省下安装 Safari 插件的步骤,可以自动识别和填充密码。

5. Firefox Focus

这是火狐开发的一个无痕浏览器,它的 Safari 插件也被归为内容拦截器,但它并不拦截广告,而是截下广告跟踪,让广告商没办法通过你点击了哪些页面来分析你的喜好和习惯。可以配合上面的 AdBlock 一同使用。

6. Turn Off the Lights for Safari

有了这个插件,可以在大部分视频网站上,把除视频窗口的一切内容低亮化,类似于流媒体网站上常见的关灯模式。

7. StartPage.ai

我们在网上冲着浪,不自觉发现自己已经打开了数十个页面,在桌面端要关闭多个页面,有键鼠的帮助也还算简单,但在移动端可就没那么方便了。

StartPage.ai 所做的,就是打开一个新的标签页,该页展示的是当前所有页面,有哪些网站一目了然,关闭页面的按键也足够大,方便手指点摁。不过它与前面推荐的 Momentum 插件同属启动页工具,二者只能选其一。

8. DForce

Safari 本身支持系统原生的夜间模式,功能栏会根据系统改变浅色或深色背景,但网页具体页面并不会随之改变,DForce 所做的,就是让页面内容也变成深色,暗光下阅读的时候多少能起到护眼的效果。

▲ 插件启用前后对比

它提供了免费版本,个人觉得基本够用,付费版只是多了些自定义选项。

9. Keyword Search

这个软件就为解决一件事,Safari 地址栏进行特定网站的快速搜索。

听起来还是有点复杂,我举个例子你很快就明白了,譬如我想在爱范儿搜索某篇文章,基本操作是在地址栏输入「ifanr.com」,然后进入爱范儿网页里点击搜索,输入关键词按回车,最终才会跳转至结果页面。

但有了 Keyword Search,我们可以提前设置好关键字,譬如用「i」设置为爱范儿站内搜索指令的快捷词,后面接上我们想要搜索的关键词,按下回车即可。

若你正在学习日语,或者你经常逛一些日文网站,那不让试试这款插件。它的功能类似于 Mate,只不过它专攻日语翻译。

另外,该插件开发者为用户预设好了数个常用网站的捷径,当你安装好这个插件后,不妨输入「y Rick Astley」试试。

10. Mate

它本身是个翻译 app,所以在 Safari 上也是充当翻译插件的角色存在,不过用户只能选取字段进行翻译,并不能把一键翻译整个页面的内容,看着跟其 198 元的售价不太相符。

不过这一需求,可以用系统自带的翻译功能满足,当我们浏览全外文网站时,地址栏左边会出现翻译按键,按一下就能把整个页面转换成中文,虽然准确度差强人意,不过可以起到辅助理解的作用,聊胜于无。

11. 10tenJapanese

若你正在学习日语,或者你经常逛一些日文网站,那不让试试这款插件。它的功能类似于 Mate,只不过它专攻日语翻译。

启用该插件后,页面会出现一个光标,长按并拖动至日文字上,就会实时显示出它的英文释义,确实它也有局限性,看来以后学日语之前,还得先学好英文。

12. JSBox

移动端的 Safari 本身没有自带检查器,JSBox 插件的出现弥补了这一缺陷。不过代码呈现的形式不太友好,点开就把整个页面挡住了。

用户在这上面还可以设立一些 Javascript 脚本,执行一些简单的功能是没有问题的。

13. Notebook

有了这个插件,用户可以不离开 Safari 网页,直接开始笔记,支持 Apple Pencil,还有页面截图功能,之后在 app 里进行更细致的划重点、圈段落等细致操作,也很不错,算是原生备忘录的一个补充。

14. 网页二维码生成

它能将当前浏览的页面生成二维码,方便你把它分享出去。

还可以辅助线下宣传,譬如大学社团可以通过它,把赛事活动的报名页面做成二维码,放在线下报名海报上。

目前看来,移动端 Safari 的插件生态处于数量尚可,质量参差的状态,如果你奔着某种特定功能上 App Store 去搜索的话,大概率会无功而返,只能去插件专区里一个一个点开去找,操作略微繁琐,整体来看还有较高的上升空间。

不过当你花费一段时间,把 Safari 打造得更符合你的使用习惯后,所得到的正向反馈,也足以把一切辛劳统统抵消,这不正是折腾 app 的乐趣所在吗?