Limited availability
ç±»å为 month
ç <input>
å¯ä»¥è®©ä½ 容æå°å建ä¸ä¸ªæ¹ä¾¿è¾å
¥å¹´ä»½ææä»½çä¸ä¸ª <input>
ãè¾å
¥ç弿¯ä¸ä¸ªç»è¿âYYYY-MM
âæ ¼å¼åçå符串ï¼å
¶ä¸ YYYY
æ¯å使°ç年份ï¼è MM
æ¯æä»½çæ°å¼è¡¨ç¤ºã
<label for="start">Start month:</label>
<input type="month" id="start" name="start" min="2018-03" value="2018-05" />
label {
display: block;
font:
1rem "Fira Sans",
sans-serif;
}
input,
label {
margin: 0.4rem 0;
}
é常æ¥è¯´æ§ä»¶ç UI çé¢å æµè§å¨çä¸åèæååï¼å°ç®åä¸ºæ¢æ¤æ§ä»¶è¿ä¸è¢«æææµè§å¨æ¯æï¼å¨æ¡é¢æµè§å¨ä¸åªæ Chrome/Opera å Edge æ¯æï¼å¨ç§»å¨ç«¯è¢«å¤§é¨åç°ä»£æµè§å¨ææ¯æãå¨ä¸æ¯æçæµè§å¨ä¸ï¼è¿ä¸ªæ§ä»¶ä¼è¢«ä¼é
çéçº§å° <input type="text">
ï¼ä¸è¿å¯¹è¾å
¥çæå伿èªå¨çéªè¯ï¼ä¿è¯å®æç
§é¢æè¿è¡æ ¼å¼åã
对äºé£äºä½¿ç¨ä¸æ¯æ month
æ§å¶å¨çæµè§å¨ç¨æ·ï¼ä»¥ä¸çæªå¾åç°äº Chrome å Opera çæä»½æ§å¶å¨ãåå»å³ä¾§çåä¸ç®å¤´ä¼æ¾ç¤ºæ¥æéæ©å¨ï¼ä»¥ä¾¿éæ©å¹´ä»½åæä»½ã
Edge ç month
æ§å¶å¨çèµ·æ¥åè¿æ ·çï¼
ä¸ä¸ªä»¥ YYYY-MM å½¢å¼ï¼4 ä¸ªææ´å¤ä½æ°çå¹´ï¼æ¥ä¸ä¸ªè¿å符 -
ï¼åæ¥ä¸ä¸ªä¸¤ä½æ°æä»½ï¼è¡¨ç¤ºæä»½å年份çå符串ãæä»½åç¬¦ä¸²çæ ¼å¼å¨æä»½åç¬¦ä¸²ä¸ææè¿°ã
ä½ å¯ä»¥éè¿å¨ value
屿§ä¸å
嫿份å年份æ¥è®¾ç½®è¯¥è¾å
¥æ§ä»¶çé»è®¤å¼ï¼åè¿æ ·ï¼
<label for="bday-month">ä½ å¨åªä¸ªæåºçï¼</label>
<input id="bday-month" type="month" name="bday-month" value="2001-06" />
éè¦æ³¨æçæ¯æ¾ç¤ºçå¦ææ ¼å¼ä¸åäºå®é
ç value
ï¼å¤§é¨åç¨æ·ä»£çåºäºæä½ç³»ç»ï¼æ ¹æ®åéçæ¬å°å形弿¾ç¤ºæä»½å年份ï¼èæ¥æç value
æ»æ¯ä¼æ ¼å¼å为 yyyy-MM
ã
å¨åæå¡å¨æäº¤ä¸è¿°å¼çæ¶åå®ä»¬çèµ·æ¥åè¿æ ·ï¼bday-month=1978-06
ã
å½ç¶ä½ ä¹å¯ä»¥ä½¿ç¨ JavaScript 代ç éè¿ HTMLInputElement.value
屿§æ¥è·åæè®¾ç½®æ¥æçå¼ãä¾å¦ï¼
<label for="bday-month">ä½ å¨åªä¸ªæåºçï¼</label>
<input id="bday-month" type="month" name="bday-month" />
const monthControl = document.querySelector('input[type="month"]');
monthControl.value = "2001-06";
å
¶ä»å±æ§
é¤äº <input>
å
ç´ çå
±æå±æ§å¤ï¼month è¾å
¥è¿æä¾ä»¥ä¸å±æ§ï¼
åè¡¨å±æ§ç弿¯ä½äºåä¸ææ¡£ä¸ç <datalist>
å
ç´ ç id
ã<datalist>
æä¾äºä¸ä¸ªé¢å®ä¹çå¼å表ï¼åç¨æ·å»ºè®®è¿ä¸ªè¾å
¥ãå表ä¸ä»»ä½ä¸ type
ä¸å
¼å®¹çå¼é½ä¸å
æ¬å¨å»ºè®®é项ä¸ãææä¾ç弿¯å»ºè®®ï¼ä¸æ¯è¦æ±ï¼ç¨æ·å¯ä»¥ä»è¿ä¸ªé¢å®ä¹çå表ä¸éæ©ï¼æè
æä¾ä¸åçå¼ã
使ç¨å¨å¼ç« èä¸è®¨è®ºçåç¬¦ä¸²æ ¼å¼æå®çææ¥åçæå¤§å¹´ä»½åæä»½ã妿è¾å
¥å°è¯¥å
ç´ ç value
è¶
è¿äºè¿ä¸ªï¼å该å
ç´ æ æ³éè¿çº¦æéªè¯ã妿 max
屿§çå¼ä¸æ¯æ ¼å¼ä¸º yyyy-MM
çææå符串ï¼å该å
ç´ æ²¡ææå¤§å¼ã
该å¼å¿
é¡»æäºæçäº min
屿§ææå®ç年份âæä»½å¯¹ã
使ç¨å¨å¼ç« èä¸è®¨è®ºçåç¬¦ä¸²æ ¼å¼æå®çææ¥åçæå°å¹´ä»½åæä»½ã妿è¾å
¥å°è¯¥å
ç´ ç value
å°äºè¿ä¸ªï¼å该å
ç´ æ æ³éè¿çº¦æéªè¯ã妿 min
屿§çå¼ä¸æ¯æ ¼å¼ä¸º yyyy-MM
çææå符串ï¼å该å
ç´ æ²¡ææå°å¼ã
该å¼å¿
é¡»æ©äºæçäº max
屿§ææå®ç年份âæä»½å¯¹ã
ä¸ä¸ªå¸å°å±æ§ï¼å¦æåå¨ï¼åè¡¨ç¤ºè¯¥åæ®µä¸è½ç±ç¨æ·ç¼è¾ã使¯ï¼ä»å¯ä»¥éè¿ JavaScript 代ç ç´æ¥è®¾ç½® HTMLInputElement.value
屿§æ¥æ´æ¹ã
夿³¨ï¼ å 为åªè¯»å段ä¸è½æå¼ï¼æä»¥ required
对æå®äº readonly
屿§çè¾å
¥æ²¡æä»»ä½å½±åã
step
屿§æå®äºå¼å¿
须满足çç²åº¦ï¼æè
æ¯ä¸ææè¿°çç¹æ®å¼ any
ãå¼å¿
须满足åºç¡çæ¥è¿å¼ï¼æææã妿æå®äº min
屿§ï¼åç± min
屿§å³å®ï¼å¦åï¼ä½¿ç¨ value
屿§çå¼ï¼å¦æä¸è¿°ä¸¤ä¸ªå¼é½ä¸åå¨ï¼åæä¾éå½çé»è®¤å¼ã
åç¬¦ä¸²å¼ any
æå³çä¸ä½¿ç¨æ¥è¿å¼ï¼ä»»æå¼é½å¯ä»¥æ¥åï¼é¤å
¶ä»å¶çº¦å ç´ å¦ min
æ max
ä¹å¤ï¼ã
夿³¨ï¼ å½ç¨æ·è¾å ¥çæ°æ®ä¸ç¬¦åæ¥è¿é ç½®æ¶ï¼ç¨æ·ä»£çå¯è½ä¼åèäºå ¥å°æè¿çææå¼ï¼å½æä¸¤ä¸ªåæ ·æ¥è¿çé项æ¶ï¼æ´å¾åäºæ£æ¹åçæ°åã
å¯¹äº month
è¾å
¥ï¼step
çå¼ä»¥æä»½ä¸ºåä½ï¼ç¼©æ¾å å为 1ï¼åºç¡æ°å¼ä¹æ¯ä»¥æä»½ä¸ºåä½çï¼ãstep
çé»è®¤å¼ä¸º 1ï¼è¡¨ç¤º 1 个æã
䏿¥æç¸å
³çè¾å
¥ï¼å
å« month
ï¼ä¹ä¸ç徿¹ä¾¿ï¼å®ä»¬æä¾äºä¸ä¸ªç®åçç¨æ·ç颿¥éæ©æ¥æï¼å¹¶ä¸å®ä»¬å°åéå°æå¡å¨çæ°æ®æ ¼å¼è§èåï¼æ è®ºç¨æ·çæ¬å°åé
ç½®å¦ä½ã使¯ï¼<input type="month">
è¿æ¯åå¨å
¼å®¹æ§é®é¢ï¼å¤§å¤æ°ä¸»æµæµè§å¨è¿æ²¡ææ¯æå®ã
æä»¬å
çç <input type="month">
çåºç¡åé«çº§çç¨æ³ï¼ç¶åå讨论æå
³ç¼è§£æµè§å¨æ¯æé®é¢ç建议ï¼è¯·åé
å¤çæµè§å¨æ¯æé®é¢ï¼ã
æç®åç <input type="month">
æ¶åå°åºç¡ç <input>
å <label>
çå
ç´ ç»åï¼åä¸é¢è¿æ ·ï¼
<form>
<label for="bday-month">ä½ å¨åªä¸ªæåºçï¼</label>
<input id="bday-month" type="month" name="bday-month" />
</form>
设置æå¤§åæå°æ¥æ
ä½ å¯ä»¥ä½¿ç¨ min
å max
屿§æ¥éå¶ç¨æ·éæ©æ¥æçèå´ãå¨ä¸åçä¾å䏿们æå®æå°æä»½ 1900-01
åæå¤§æä»½ 2013-12
ï¼
<form>
<label for="bday-month">ä½ å¨åªä¸ªæåºçï¼</label>
<input
id="bday-month"
type="month"
name="bday-month"
min="1900-01"
max="2013-12" />
</form>
ç»ææ¯è¿æ ·ï¼
<input type="month">
䏿¯æè¯¸å¦ size
ç表å大å°å±æ§ï¼ä½ å¿
é¡»ä¾é CSS æ¥ç¡®å®å¤§å°ã
é»è®¤æ
åµä¸ï¼<input type="month">
ä¸ä¼å¯¹è¾å
¥çå¼åºç¨ä»»ä½éªè¯ï¼ç¨æ·çé¢å®ç°ä¼å±è½ææéæ¥æå¼çè¾å
¥ï¼å°½ç®¡è¿å¾æç¨ï¼ä½æ¯ä»ç¶æ æ³å®å
¨ä¾èµäºè¯¥å¼çåæ³æ§ãä½ ä»ç¶å¯ä»¥ä¸å¡«å
¥ä»»ä½å¼èæäº¤ï¼æè¾å
¥ä¸åæ³çæ¥æå¼ï¼å¦ 4 æ 32 æ¥ï¼ã
为äºé¿å
è¿ç§æ
åµï¼ä½ å¯ä»¥ä½¿ç¨ min
å max
æ¥éå¶å¯ç¨çæ¥æï¼åè§è®¾ç½®æå¤§åæå°æ¥æï¼ï¼å¹¶ä½¿ç¨ required
屿§ä»¤æ¥æå¿
å¡«ã卿¯æçæµè§å¨ä¸ï¼å½ä½ å°è¯æäº¤è¶
åºèå´çæ¥æï¼æç©ºæ¥æå¼æ¶ï¼ä¼æ¾ç¤ºé误信æ¯ã
æä»¬æ¥çä¸ä¸ªä¾åï¼è¿éæä»¬è®¾å®äºæå°åæå¤§çæ¥æï¼å¹¶ä»¤è¯¥åæ®µå¿ å¡«ï¼
<form>
<div>
<label for="month"> ä½ æ¿æå¨åªä¸ªææè®¿ï¼6 æè³ 9 æï¼ï¼ </label>
<input
id="month"
type="month"
name="month"
min="2022-06"
max="2022-09"
required />
<span class="validity"></span>
</div>
<div>
<input type="submit" value="æäº¤è¡¨å" />
</div>
</form>
å¦æä½ å°è¯å¨æªæå®æä»½æå¹´ä»½ï¼ææå®è¶ åºç»å®èå´çæ¥ææ åµä¸æäº¤è¡¨åï¼æµè§å¨ä¼æ¾ç¤ºé误ã请è¯è¯ä»¥ä¸å®æ¶æ¼ç¤ºï¼
对äºé£äºæ²¡æä½¿ç¨æ¯æçæµè§å¨ç人们æ¥è¯´ï¼ä»¥ä¸æ¯è¯¥é误çå±å¹æªå¾ï¼
ä¸é¢æ¯ä¸è¿°ä¾åä¸ä½¿ç¨ç CSSãè¿éæä»¬ä½¿ç¨äº :valid
å :invalid
è¿ä¸¤ä¸ª CSS 屿§ï¼æ ¹æ®å½å弿¯å¦æææ¥ä¸ºè¾å
¥æ·»å æ ·å¼ãæä»¬ä¸å¾ä¸æå¾æ æ¾å¨ input æè¾¹ç <span>
ä¸ï¼è䏿¯æ¾å¨ input æ¡æ¬èº«ï¼å ä¸ºå¨ Chrome ä¸ï¼çæçå
容被æ¾å¨è¡¨åæ§ä»¶éé¢ï¼æ æ³ææå°è¿è¡æ ·å¼è®¾è®¡ææ¾ç¤ºã
div {
margin-bottom: 10px;
position: relative;
}
input[type="number"] {
width: 100px;
}
input + span {
padding-right: 30px;
}
input:invalid + span::after {
position: absolute;
content: "â";
padding-left: 5px;
}
input:valid + span::after {
position: absolute;
content: "â";
padding-left: 5px;
}
è¦åï¼ HTML 表åéªè¯å¹¶ä¸è½æ¿ä»£ç¡®ä¿è¾å ¥æ°æ®æ ¼å¼æ£ç¡®çèæ¬ãå¾å®¹æå¯¹ HTML è¿è¡è°æ´ï¼ä½¿ä»ä»¬è½å¤ç»è¿éªè¯ï¼æå®å ¨å é¤éªè¯ã乿å¯è½ä¼å®å ¨ç»è¿ HTML 代ç ï¼ç´æ¥å°æ°æ®æäº¤ç»ä½ çæå¡å¨ãå¦æä½ çæå¡å¨ç«¯ä»£ç ä¸è½éªè¯å®ææ¶å°çæ°æ®ï¼é£ä¹å½æäº¤çæ°æ®æ ¼å¼ä¸å½ï¼ææ°æ®è¿å¤§ãç±»åé误ççï¼æ¶ï¼ç¾é¾å°±ä¼é临ã
å¤çæµè§å¨æ¯æå¦åæè¿°ï¼ä½¿ç¨ month è¾å
¥çæå¤§é®é¢æ¯å¤§é¨åä¸»æµæµè§å¨è¿æ²¡æå®ç°å®ä»¬ï¼åªææ¡é¢ç«¯ç Chrome/OperaãEdge å大é¨åçç§»å¨ç«¯ç°ä»£æµè§å¨æ¯æå®ä»¬ãä¾å¦ï¼å®åç Chrome ç month
éæ©å¨çèµ·æ¥åè¿æ ·ï¼
䏿¯æçæµè§å¨ä¼ä¼é å°éçº§ä¸ºææ¬è¾å ¥ï¼ä½è¿å¨ç¨æ·çé¢çä¸è´æ§ï¼åç°çæ§ä»¶ä¼ææä¸åï¼åæ°æ®å¤çæ¹é¢é½ä¼äº§çé®é¢ã
第äºä¸ªé®é¢æ´ä¸ºä¸¥éï¼å¦åæè¿°ï¼month
è¾å
¥ç弿»æ¯è¢«è§è为 yyyy-mm
çæ ¼å¼ãå¦ä¸æ¹é¢ï¼å¯¹äºææ¬è¾å
¥ï¼é»è®¤æ
åµä¸ï¼æµè§å¨ä¸ç¥éæ¶é´åºè¯¥æ¯ä»ä¹æ ¼å¼ï¼èä¸äººä»¬æå¤ç§åæ³ï¼å¦ï¼
mmyyyy
(072022)mm/yyyy
(07/2022)mm-yyyy
(07-2022)yyyy-mm
(2022-07)Month yyyy
(July 2022)ä¸ä¸ªåæ³æ¯å¨ä½ ç month
è¾å
¥ä¸æ·»å pattern
屿§ãå³ä½¿ month
è¾å
¥ä¸ä½¿ç¨å®ï¼text è¾å
¥åéä¹ä¼ä½¿ç¨ãä¾å¦ï¼è¯çå¨ä¸ä¸ªä¸æ¯æ month è¾å
¥çæµè§å¨ä¸æ¥çä¸é¢çæ¼ç¤ºï¼
<form>
<div>
<label for="month"> æ¿æå¨åªä¸ªæè®¿é®ï¼6 æè³ 9 æï¼ï¼ </label>
<input
id="month"
type="month"
name="month"
min="2022-06"
max="2022-09"
required
pattern="[0-9]{4}-[0-9]{2}" />
<span class="validity"></span>
</div>
<div>
<input type="submit" value="æäº¤è¡¨å" />
</div>
</form>
å¦æä½ å°è¯æäº¤ï¼ä½ ä¼åç°ï¼å¦æä½ çè¾å
¥ä¸ç¬¦åæ¨¡å¼ nnnn-nn
ï¼å
¶ä¸ n
æ¯ 0 å° 9 çæ°åï¼ï¼ä¸æ¯æçæµè§å¨ç°å¨ä¼æ¾ç¤ºä¸ä¸ªé误信æ¯ï¼å¹¶çªåºæ¾ç¤ºè¾å
¥æ æï¼ãå½ç¶ï¼è¿å¹¶ä¸è½é»æ¢äººä»¬è¾å
¥æ æçæ¥æï¼å¦ 0000-42
ï¼ï¼æè
䏿£ç¡®ä½éµå¾ªæ ¼å¼çæ¥æã
è¿æä¸ä¸ªé®é¢ï¼å°±æ¯ç¨æ·ä¸ç¥éå°åºåºè¯¥è¾å ¥ä»ä¹æ ¼å¼çæ¥æãè¿æä¸äºäºæ è¦åã
div {
margin-bottom: 10px;
position: relative;
}
input[type="number"] {
width: 100px;
}
input + span {
padding-right: 30px;
}
input:invalid + span::after {
position: absolute;
content: "â";
padding-left: 5px;
}
input:valid + span::after {
position: absolute;
content: "â";
padding-left: 5px;
}
ç®åï¼ä»¥è·¨æµè§å¨æ¹å¼å¤çæ¶é´çæä½³æ¹æ³ï¼è³å°å¨ææä¸»æµæµè§å¨å®ç°å®ä»¬ä¹åï¼æ¯è®©ç¨æ·å¨åç¬çæ§ä»¶ä¸è¾å
¥æä»½å年份ï¼ç¹å«æ¯å¨ <select>
å
ç´ ä¸ï¼åè§ä¸é¢ç示ä¾ï¼ï¼æä½¿ç¨ JavaScript åºï¼ä¾å¦ jQuery æ¥æéæ©å¨æä»¶ï¼ã
卿¤ç¤ºä¾ä¸ï¼æä»¬å建äºä¸¤ç»ç¨äºéæ©æ¥æçæ¥å£å
ç´ ï¼ä½¿ç¨ <input type="month">
å建çåçéæ©å¨ï¼ä»¥åä¸ºä¸æ¯æ month è¾å
¥ç±»åçæ§çæµè§å¨åå¤ç两个åå«ç¨äºéæ©æä»½å年份ç <select>
å
ç´ ã
ç¨äºè¯·æ±æä»½å年份ç表åçèµ·æ¥åè¿æ ·ï¼
<form>
<div class="nativeDatePicker">
<label for="month-visit">What month would you like to visit us?</label>
<input type="month" id="month-visit" name="month-visit" />
<span class="validity"></span>
</div>
<p class="fallbackLabel">What month would you like to visit us?</p>
<div class="fallbackDatePicker">
<div>
<span>
<label for="month">Month:</label>
<select id="month" name="month">
<option selected>January</option>
<option>February</option>
<option>March</option>
<option>April</option>
<option>May</option>
<option>June</option>
<option>July</option>
<option>August</option>
<option>September</option>
<option>October</option>
<option>November</option>
<option>December</option>
</select>
</span>
<span>
<label for="year">Year:</label>
<select id="year" name="year"></select>
</span>
</div>
</div>
</form>
ID 为 nativeDatePicker
ç <div>
ä½¿ç¨ month
è¾å
¥ç±»åæ¥è¯·æ±æä»½å年份ï¼è ID 为 fallbackDatePicker
ç <div>
å使ç¨ä¸å¯¹ <select>
å
ç´ ã第ä¸ä¸ªå
ç´ è¯·æ±æä»½ï¼ç¬¬äºä¸ªå
ç´ è¯·æ±å¹´ä»½ã
ç¨äºéæ©æä»½ç <select>
æ¯ç¡¬ç¼ç çï¼å 为æä»½çåç§°ä¸ä¼æ¹åï¼ä¸èèæ¬å°åï¼ãå¯ç¨ç年份å¼åè¡¨æ¯æ ¹æ®å½å年份卿çæçï¼å
³äºè¿äºå½æ°å¦ä½å·¥ä½ç详ç»è§£éï¼è§ä¸é¢çä»£ç æ³¨éï¼ã
div {
margin-bottom: 10px;
position: relative;
}
input[type="number"] {
width: 100px;
}
input + span {
padding-right: 30px;
}
input:invalid + span::after {
position: absolute;
content: "â";
padding-left: 5px;
}
input:valid + span::after {
position: absolute;
content: "â";
padding-left: 5px;
}
JavaScript
å¤çéæ©åªç§æ¹æ¡å¹¶è®¾å®ä¸ç³»åå
å«äºéåçç <select>
ç年份å表ç JavaScript 代ç å¦ä¸æç¤ºã
该代ç ä¸å¯è½æè¶£çå¦ä¸é¨åæ¯ç¹æ§æ£æµä»£ç ãè¦æ£æµæµè§å¨æ¯å¦æ¯æ <input type="month">
ï¼æä»¬å建ä¸ä¸ªæ°ç <input>
å
ç´ ï¼å°è¯å°å
¶ type
设置为 month
ï¼ç¶åç«å³æ£æ¥å
¶ type
å¼ã䏿¯æçæµè§å¨å°è¿å text
ï¼ä¸ month çåéè¡ä¸ºç¸ç¬¦ã妿䏿¯æ <input type="month">
ï¼æä»¬å°éèåçéæ©å¨å¹¶æ¾ç¤ºä½ä¸ºåéçéæ©å¨ UIã
// è·å UI å
ç´
const nativePicker = document.querySelector(".nativeDatePicker");
const fallbackPicker = document.querySelector(".fallbackDatePicker");
const fallbackLabel = document.querySelector(".fallbackLabel");
const yearSelect = document.querySelector("#year");
const monthSelect = document.querySelector("#month");
// æåï¼éèåéå
ç´
fallbackPicker.style.display = "none";
fallbackLabel.style.display = "none";
// æµè¯ä¸ä¸ªæ°ç date è¾å
¥æ¡æ¯å¦ä¼åéè³ text è¾å
¥æ¡
const test = document.createElement("input");
try {
test.type = "month";
} catch (e) {
console.log(e.description);
}
// 妿åéäºï¼è¿è¡ if 代ç åä¸ç代ç
if (test.type === "text") {
// éèåçéæ©å¨ï¼æ¾ç¤ºåéå
ç´
nativePicker.style.display = "none";
fallbackPicker.style.display = "block";
fallbackLabel.style.display = "block";
// 卿çæå¹´ä»½
// æä»½æ»æ¯ç¸åçï¼æ
å°å®ä»¬ç¡¬ç¼ç
populateYears();
}
function populateYears() {
// è·åå½åå¹´ä»½çæ°å¼è¡¨ç¤º
const date = new Date();
const year = date.getFullYear();
// å¨å¹´ä»½ <select> ä¸ï¼ä»¤è¯¥å¹´åä¹åç 100 å¹´å¯é
for (let i = 0; i <= 100; i++) {
const option = document.createElement("option");
option.textContent = year - i;
yearSelect.appendChild(option);
}
}
夿³¨ï¼ è¯·è®°ä½æäºå¹´ä»½æ 53 å¨ï¼è§æ¯å¹´ç卿°ï¼ï¼å½ä½ å¨å¼å产ååºç¨æ¶åºå½èèè¿ä¸ªé®é¢ã
è§è æµè§å¨å ¼å®¹æ§ åè§RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4