果在前几天推送了ios7.1.2的更新,盘古越狱团队在第一时间发布微博证实盘古越狱工具支持ios7.1.2,苹果此次并没有修补越狱漏洞。这样,就有更多的iPhone用户加入了越狱的行列,而越狱的其中一大用处就是美化自己的系统界面,今天就带给大家几款很火的越狱美化插件推荐。
本文因为篇幅原因,只推荐插件,插件的具体使用方法,可以自行百度。
一、winterboard
winterboard作为越狱后排行第一的越狱美化插件,也是iPhone越狱主题美化的必备插件。所有的主题都要借助于winterboard来实现安装。
二、zeppelin
zeppelin是一款更换运营商标识的美化插件,可以将中国移动/联通字样换成图标或者自己喜欢的字。
三、barrel
barrel是一款动态翻页插件,一共有18种翻页方式,并且在不断更新。
四、Springtomiz3
Springtomiz3是越狱美化控不可错过的精品,它可以实现动画效果、系统功能、Dock、锁屏、图标、文件夹、状态栏、多任务管理器、通知中心等项目的定义设置,功能十分齐全和强大。
五、LockHTML3
LockHTML3是一款锁屏界面的美化插件,可以更换锁屏主题,隐藏锁屏界面的所有元素。
六、更多美化插件等待后续更新。
我们先从浏览器按键时间说起,
用JavaScript实现键盘记录,要关注浏览器的三种按键事件类型,
它们分别对应onkeydown、 onkeypress和onkeyup这三个事件句柄。一个典型的按键会产生所有这三种事件,依次是keydown,keypress,然后是按键释放时候的keyup。
KeyDown:在控件有焦点的情况下按下键时发生。
KeyPress:在控件有焦点的情况下按下键时发生。
KeyUp:在控件有焦点的情况下释放键时发生。
在这3种事件类型中,keydown和keyup比较底层,而keypress比较高级。这里所谓的高级是指,当用户按下shift + 1时,keypress是对这个按键事件进行解析后返回一个可打印的“!”字符,而keydown和keyup只是记录了shift + 1这个事件。
但是keypress只能针对一些可以打印出来的字符有效,而对于功能按键,如F1-F12、Backspace、Enter、Escape、 PageUP、PageDown和箭头方向等,就不会产生keypress事件,但是可以产生keydown和keyup事件。然而在FireFox中,功能按键是可以产生keypress事件的。
传递给keydown、keypress和keyup事件句柄的事件对象有一些通用的属性。如果Alt、Ctrl或Shift和一个按键一起按下,这通过事件的altKey、ctrlKey和shiftKey属性表示,这些属性在FireFox和IE中是通用的。
注意:
KeyDown触发后,不一定触发KeyUp,当KeyDown 按下后,拖动鼠标,那么将不会触发KeyUp事件。
KeyPress主要用来捕获数字(注意:包括Shift+数字的符号)、字母(注意:包括大小写)、小键盘等 除了 F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜单键}、{开始键}和方向键 外的ANSI字符
KeyPress 只能捕获单个字符,可以捕获单个字符的大小写,不区分小键盘和主键盘的数字字符。
KeyDown 和KeyUp 通常可以捕获键盘除了PrScrn(截屏)所有按键
KeyDown 和KeyUp 可以捕获组合键,对于单个字符捕获的KeyValue 都是一个值,也就是不能判断单个字符的大小写,区分小键盘和主键盘的数字字符。
其中PrScrn 按键KeyPress、KeyDown和KeyUp 都不能捕获。
keydown、keypress 按着不动会持续执行事件,keyup执行一次
在使用键盘的时候,通常会使用到CTRL+SHIFT+ALT 类似的组合键功能,通过KeyUp 事件能够来处理(这里说明一下为什么不用KeyDown,因为在判定KeyDown的时候,CTRL、SHIFT和ALT 属于一直按下状态,然后再加另外一个键是不能准确捕获组合键,所以使用KeyDown 是不能准确判断出的,要通过KeyUp 事件来判定 )
前端架构暴力拆解,源码解析,多年经验分享,请持续关注!
家好,很高兴又见面了,我是"高级前端?进阶?",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。
Chrono 是 Javascript 中的自然语言日期解析器,它旨在处理大多数日期/时间格式并从任何给定文本中提取信息,内容包括:
目前 Chrono 在 Github 上通过 MIT 协议开源,有超过 3.5k 的 star,值得尝试。
首先需要通过 NPM 安装:
npm install --save chrono-node
然后直接在代码中引入即可:
import * as chrono from 'chrono-node';
chrono.parseDate('An appointment on Sep 12-13');
如果是 Node.js 环境,可以使用下面的代码:
const chrono=require('chrono-node');
// or `import chrono from 'chrono-node'` for ECMAScript
对于 Chrono 库来说,只需将字符串传递给函数 chrono.parseDate 或 chrono.parse 即可。
import * as chrono from 'chrono-node';
chrono.parseDate('An appointment on Sep 12-13');
// Fri Sep 12 2014 12:00:00 GMT-0500 (CDT)
chrono.parse('An appointment on Sep 12-13');
/* [{
index: 18,
text: 'Sep 12-13',
start: ...
}] */
今天的“星期五”与上个月的“星期五”不同,引用日期的含义取决于它们被提及的时间和地点。 Chrono 允许开发者将引用定义为 Date 或 ParsingReference 对象:
// (Note: the exmaples run on JST timezone)
chrono.parseDate('Friday', new Date(2012, 8 - 1, 23));
// Fri Aug 24 2012 12:00:00 GMT+0900 (JST)
chrono.parseDate('Friday', new Date(2012, 8 - 1, 1));
// Fri Aug 03 2012 12:00:00 GMT+0900 (JST)
chrono.parseDate('Friday at 4pm', {
// Wed Jun 09 2021 21:00:00 GMT+0900 (JST)
//=Wed Jun 09 2021 07:00:00 GMT-0500 (CDT)
instant: new Date(1623240000000),
timezone: 'CDT',
});
// Sat Jun 12 2021 06:00:00 GMT+0900 (JST)
//=Fri Jun 11 2021 16:00:00 GMT-0500 (CDT)
forwardDate(布尔值)假设结果应该在参考日期之后发生。
const referenceDate=new Date(2012, 7, 25);
// Sat Aug 25 2012 00:00:00 GMT+0900 -- The reference date was Saturday
chrono.parseDate('Friday', referenceDate);
// Fri Aug 24 2012 12:00:00 GMT+0900 (JST) -- The day before was Friday
chrono.parseDate('Friday', referenceDate, { forwardDate: true });
// Fri Aug 31 2012 12:00:00 GMT+0900 (JST) -- The following Friday
timezones 覆盖或添加时区缩写和偏移量之间的自定义映射。 当希望 Chrono 将某些文本解析为给定的时区偏移量时,请使用此选项。 Chrono 支持明确的(正常)时区映射和模糊映射,其中夏令时期间和之外的偏移量不同。
// Chrono doesn't understand XYZ, so no timezone is parsed
chrono.parse('at 10:00 XYZ', new Date(2023, 3, 20))
// "knownValues": {"hour": 10, "minute": 0}
// Make Chrono parse XYZ as offset GMT-0300 (180 minutes)
chrono.parse('at 10:00 XYZ', new Date(2023, 3, 20), { timezones: { XYZ: -180 } })
// "knownValues": {"hour": 10, "minute": 0, "timezoneOffset": -180}
// Make Chrono parse XYZ as offset GMT-0300 outside of DST, and GMT-0200 during DST. Assume DST is between
import { getLastDayOfMonthTransition } from "timezone";
import { Weekday, Month } from "parsing";
const parseXYZAsAmbiguousTz={
timezoneOffsetDuringDst: -120,
timezoneOffsetNonDst: -180,
dstStart: (year: number)=> getLastWeekdayOfMonth(year, Month.FEBRUARY, Weekday.SUNDAY, 2),
dstEnd: (year: number)=> getLastWeekdayOfMonth(year, Month.SEPTEMBER, Weekday.SUNDAY, 3)
};
// Parsing a date which falls within DST
chrono.parse('Jan 1st 2023 at 10:00 XYZ', new Date(2023, 3, 20), { timezones: { XYZ: parseXYZAsAmbiguousTz } })
// "knownValues": {"month": 1, ..., "timezoneOffset": -180}
// Parsing a non-DST date
chrono.parse('Jun 1st 2023 at 10:00 XYZ', new Date(2023, 3, 20), { timezones: { XYZ: parseXYZAsAmbiguousTz } })
// "knownValues": {"month": 6, ..., "timezoneOffset": -120}
https://github.com/wanasit/chrono
https://dexlock.com/blog/a-dive-into-nlp-date-parsers/
*请认真填写需求信息,我们会在24小时内与您取得联系。