果在前幾天推送了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小時內與您取得聯系。