๐ฏ ไธไธช็ฎๆด้ซๆ็ Tampermonkey ่ๆฌ๏ผๅธฎไฝ ่ฟๆปค Linux.do ่ฎบๅไธญไธๆณ็็ๅ ๅฎน
|
|
ๅฎ่ฃ Tampermonkey ๆต่งๅจๆฉๅฑ๏ผ
็นๅปไธๆน้พๆฅ๏ผTampermonkey ไผ่ชๅจๅผนๅบๅฎ่ฃ ๆ็คบ๏ผ
๐ ็นๅปๅฎ่ฃ linuxdo-tag-filter.user.js
็ถๅ่ฎฟ้ฎ Linux.do ๅผๅงไฝฟ็จ ๐
- ๆฅ็ linuxdo-tag-filter.user.js ่ๆฌๆบ็
- ๅคๅถ ๅ จ้จไปฃ็
- ๆๅผ Tampermonkey โ ๅๅปบๆฐ่ๆฌ
- ็ฒ่ดด ๅนถไฟๅญ (Ctrl+S)
- ่ฎฟ้ฎ Linux.do ๅผๅงไฝฟ็จ ๐
่ๆฌ้ป่ฎค่ฟๆปค "ๆฝๅฅ" ๆ ็ญพ๏ผๅผ็ฎฑๅณ็จใ
็นๅปๆต่งๅจๅทฅๅ ทๆ ็ Tampermonkey ๅพๆ ๆๅผ่ๅ๏ผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
ๅฏ็จๆ ็ญพ่ฟๆปค โ # ๆปๅผๅ
ณ
โ โ ๆทปๅ ้ปๅๅๆ ็ญพ โ # ๆทปๅ ๆฐๆ ็ญพ
โ ๐๏ธ ๆธ
็ฉบ้ปๅๅ โ # ๆธ
็ฉบๆๆ
โ โ ๆฝๅฅ โ # ็นๅปๅ ้ค
โ ๐ ๆฅ็่ฟๆปค็ป่ฎก โ # ๆฅ็ๆฐๆฎ
โ โ
่ชๅจๅ ่ฝฝๆดๅค โ # ๆบ่ฝ้ขๅ ่ฝฝ โญ
โ ่ฐ่ฏๆจกๅผ โ # ๅผๅ่
ๆจกๅผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ๆทปๅ ้ปๅๅๆ ็ญพ
- ็นๅป "โ ๆทปๅ ้ปๅๅๆ ็ญพ"
- ่พๅ
ฅๆ ็ญพๅ๏ผๅฆ
ๅนฟๅใๆฐด่ดด๏ผ - ็กฎ่ฎค๏ผ้กต้ข่ชๅจๅทๆฐ โ
ๆฅ็่ฟๆปค็ป่ฎก
็นๅป "๐ ๆฅ็่ฟๆปค็ป่ฎก" ๆฅ็่ฏฆ็ปๆฐๆฎ๏ผ
๐ ่ฟๆปค็ป่ฎกไฟกๆฏ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ ๆป Topics ๆฐ๏ผ150
๐ซ ๅทฒ่ฟๆปคๆฐ้๏ผ25
โ
ๆพ็คบๆฐ้๏ผ125
๐ ่ฟๆปค็๏ผ16.7%
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ท๏ธ ๅๆ ็ญพ่ฟๆปค็ป่ฎก๏ผ
โข ๆฝๅฅ: 20 ไธช (13.3%)
โข ๅนฟๅ: 5 ไธช (3.3%)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ๏ธ ็ถๆ๏ผโ
ๅทฒๅฏ็จ
๐ ่ฐ่ฏ๏ผๅ
ณ้ญ
ไธดๆถ็ฆ็จ่ฟๆปค
- ็นๅป "โ ๅฏ็จๆ ็ญพ่ฟๆปค" ็ฆ็จ
- ้กต้ขๅทๆฐ๏ผๆพ็คบๆๆๅ ๅฎน
- ๅๆฌก็นๅปๆขๅค่ฟๆปค
{
"enabled": true,
"blacklist": ["ๆฝๅฅ"],
"debug": false,
"autoLoad": true
}ๅจๆต่งๅจๆงๅถๅฐ (F12) ไธญๆง่ก๏ผ
// ๆฅ็ๅฝๅ้
็ฝฎ
console.log(GM_getValue('ld_tag_filter_config_v1'));
// ๆน้ๅฏผๅ
ฅ้ปๅๅ
const config = {
enabled: true,
blacklist: ["ๆฝๅฅ", "ๅนฟๅ", "ๆฐด่ดด", "่ฝฌๅ"],
debug: false,
autoLoad: true
};
GM_setValue('ld_tag_filter_config_v1', JSON.stringify(config));
location.reload();ไธบไปไนๆไบ topics ๆฒก่ขซ่ฟๆปค๏ผ
ๅๅ ๏ผๆ ็ญพๅ็งฐไธๅน้
่งฃๅณๆนๆณ๏ผ
- ๆ F12 ๆๅผๆงๅถๅฐ
- ๅฏ็จ "่ฐ่ฏๆจกๅผ"
- ๅทๆฐ้กต้ข๏ผๆฅ็ๆฅๅฟไธญ็ๅฎ้ ๆ ็ญพๅ
- ็กฎไฟ้ปๅๅไธญ็ๆ ็ญพๅฎๅ จไธ่ด๏ผๅ ๆฌๅคงๅฐๅ๏ผ
็คบไพ๏ผ
- โ
ๆฝ็(็นไฝ) โๆฝๅฅ(็ฎไฝ) - โ
ๆฝๅฅ=ๆฝๅฅ
้ ็ฝฎไผไธขๅคฑๅ๏ผ
ไธไผใ้ ็ฝฎไฟๅญๅจๆต่งๅจๆฌๅฐๅญๅจไธญ๏ผ้ค้๏ผ
- ๆๅจๆธ ้คๆต่งๅจๆฐๆฎ
- ๅธ่ฝฝๆต่งๅจๆฉๅฑ
ๅฆไฝ้็ฝฎ้ ็ฝฎ๏ผ
ๆงๅถๅฐๆง่ก๏ผ
GM_deleteValue('ld_tag_filter_config_v1');
location.reload();่ๆฌไผๅฝฑๅๆง่ฝๅ๏ผ
ไธไผ๏ผv4.x ็ป่ฟ็ฒพๅฟไผๅ๏ผ
- โ ไปฃ็ ็ฒพ็ฎ้ซๆ๏ผ686 ่ก๏ผ
- โ ๆบ่ฝๅป้๏ผ้ฟๅ ้ๅคๅค็
- โ ๅณๆถ่ฟๆปค๏ผ้ถๅปถ่ฟ
- โ ้ซๆ็ป่ฎก๏ผๅฎๆถๆดๆฐ
- โ ๆบ่ฝๆธ ็๏ผ้ฟๅ ๅ ๅญๆณๆผ
่ชๅจๅ ่ฝฝๆฏๅฆไฝๅทฅไฝ็๏ผ
่ๆฌไฝฟ็จไธ้็ญ็ฅ็กฎไฟๆ ็ผๆต่ง๏ผ
- ๆๅ่งฆๅ - ่ท็ฆปๅบ้จ 800px ๆถ้ขๅ ่ฝฝ
- ๆบ่ฝ่กฅๅ - ๅฏ่งๅ ๅฎนๅฐไบ 15 ไธชๆถ่ชๅจๅ ่ฝฝ
- DOM ็ๅฌ - ๆฃๆตๆฐๅ ๅฎนๅ็ปง็ปญๅ ่ฝฝ
ๅ็๏ผ็ดๆฅ่ฐ็จ Discourse ๅ
้จ API (model.list.loadMore())
็นๅปๅธๅญๅ่ฟๅ๏ผ่ชๅจๅ ่ฝฝ่ฟๆๆๅ๏ผ
ๆๆ๏ผv4.1.0 ๅทฒไฟฎๅคๆญค้ฎ้ขใ
ๅทฅไฝๅ็๏ผ
- ่ๆฌ็ๅฌ URL ๅๅ๏ผSPA ่ทฏ็ฑๅๆข๏ผ
- ๆฃๆตๅฐ่ฟๅๅ่กจ้กตๆถ๏ผ่ชๅจ้ๆฐๅๅงๅ่ชๅจๅ ่ฝฝ
- ๆธ ็ๆง็็ๅฌๅจ๏ผ้ฟๅ ๅ ๅญๆณๆผ
ๆฏๆๅบๆฏ๏ผ
- โ ๆต่งๅจๅ่ฟ/ๅ้
- โ ็นๅป่ฎบๅๅ ้พๆฅ
- โ ไปๅธๅญ่ฏฆๆ ่ฟๅ
- โ ไธๅๅ่กจ้กตๅๆข
ๆ็คบ๏ผๅผๅฏ่ฐ่ฏๆจกๅผๅฏๆฅ็่ฏฆ็ป็่ทฏ็ฑๅๆขๆฅๅฟ
ๅฆไฝๅผๅฏ่ฐ่ฏๆจกๅผ๏ผ
- ็นๅป่ๅไธญ็ "่ฐ่ฏๆจกๅผ"
- ๆๅผๆงๅถๅฐ (F12)
- ๆฅ็่ฏฆ็ปๆฅๅฟ๏ผๅ็ผไธบ
[ๆ ็ญพ่ฟๆปคๅจ]
่ฐ่ฏๆฅๅฟ็คบไพ๏ผ
[ๆ ็ญพ่ฟๆปคๅจ] v4.1.0 ๅๅงๅไธญ...
[ๆ ็ญพ่ฟๆปคๅจ] โ CSS ๆ ทๅผๅทฒๆณจๅ
ฅ
[ๆ ็ญพ่ฟๆปคๅจ] โ ๅๅง่ฟๆปคๅฎๆ๏ผๅทฒ่ฟๆปค 5/30 ไธช topics
[ๆ ็ญพ่ฟๆปคๅจ] โ Discourse ๅทฒๅ ่ฝฝ๏ผ็ฌฌ 3 ๆฌกๆฃๆต๏ผ
[ๆ ็ญพ่ฟๆปคๅจ] โ ่ชๅจๅ ่ฝฝๅทฒๅฏๅจ๏ผAPI่ฐ็จ + ๆๅ800px่งฆๅ๏ผ
[ๆ ็ญพ่ฟๆปคๅจ] URL ๅๅ: https://linux.do/t/12345 โ https://linux.do/latest
[ๆ ็ญพ่ฟๆปคๅจ] โ ๆฃๆตๅฐ่ฟๅๅ่กจ้กต๏ผ้ๆฐๅๅงๅ่ชๅจๅ ่ฝฝ
Bug ไฟฎๅค
- ๐ ไฟฎๅค่ชๅจๅ ่ฝฝๅคฑๆ้ฎ้ข - ็นๅป่ฟๅ ฅๅธๅญๅ่ฟๅไธป้กต้ข๏ผ่ชๅจๅ ่ฝฝๅ่ฝไธๅๅคฑๆ
- ๐ SPA ่ทฏ็ฑ็ๅฌ - ็ๅฌ
pushStateใreplaceStateๅpopstateไบไปถ - โป๏ธ ๆบ่ฝ้ๆฐๅๅงๅ - ่ฟๅๅ่กจ้กตๆถ่ชๅจ้ๆฐๅๅงๅ่ชๅจๅ ่ฝฝๅ่ฝ
- ๐งน ่ตๆบๆธ ็ - ็ฆปๅผๅ่กจ้กตๆถๆธ ็็ๅฌๅจ๏ผ้ฟๅ ๅ ๅญๆณๆผ
ๆๆฏๆน่ฟ
- โ
็ๅฌ URL ๅๅ๏ผ
history.pushState/replaceState/popstate๏ผ - โ
ๆฃๆตๅ่กจ้กต่ทฏๅพ๏ผ
/latestใ/topใ/hotใไธป้กต๏ผ - โ ๆธ ็ๆง็ IntersectionObserver ๅ MutationObserver
- โ ๅปถ่ฟ้ๆฐๅๅงๅ๏ผ็ญๅพ DOM ๆดๆฐๅฎๆ
้็จๅบๆฏ
- โ ๆต่งๅจๅ่ฟ/ๅ้ๆ้ฎ
- โ ็นๅป่ฎบๅๅ ้จ้พๆฅ
- โ ไปๅธๅญ่ฏฆๆ ่ฟๅๅ่กจ
- โ ๅจไธๅๅ่กจ้กต้ดๅๆข
้ๅคงไผๅ
- ๐๏ธ ไปฃ็ ็ฒพ็ฎ 33.5% (893 โ 594 ่ก)
- โก ๆง่ฝๆๅ๏ผๅฏๅจๆดๅฟซ
- ๐งน ๅ ้คๅไฝไปฃ็ ๅๅผๅ่ฐ่ฏๅ่ฝ
- ๐ฆ ๆดๆ็ปดๆค็ไปฃ็ ็ปๆ
ๅ ้คๅ ๅฎน
- โ ่ฏๆญๅฝๆฐ (-146 ่ก)
- โ ๅฑๆง็ๅฌๅจ (-34 ่ก)
- โ CSS ้ช่ฏ้ป่พ (-14 ่ก)
- โ ้ๅคๅฝๆฐๅ่ฟๅบฆๆฅๅฟ (-100+ ่ก)
ไผๅๆน่ฟ
- โ
ๆๅๅธธ้
TOPIC_SELECTORS - โ ็ฎๅ้่ฏๆบๅถ
- โ ็ฒพ็ฎๆฅๅฟ่พๅบ
- โ ไผๅไปฃ็ ้ป่พ
ๅ่ฝๅฎๆดๆง
- โ ๆๆๆ ธๅฟๅ่ฝไฟ็
- โ ่ชๅจๅ ่ฝฝๆดๅ ็จณๅฎ
- โ ่ฟๆปคๆบๅถๆด้ซๆ
ๆฅ็ๅๅฒ็ๆฌ
- ๐ง ไฟฎๅค
unsafeWindow่ฎฟ้ฎ้ฎ้ข - ๐ฏ ไฝฟ็จ้กต้ข็ๅฎ window ๅฏน่ฑก
- โ ่งฃๅณ Discourse ไธๅฏ็จ้่ฏฏ
- ๐ ไธปๅจ่ฐ็จ Discourse API
- ๐ก ็ดๆฅ่ฐ็จ
model.list.loadMore() - ๐ฏ ๆๅ 800px ่งฆๅๅ ่ฝฝ
- ๐ ๆฐๅข่ชๅจๅ ่ฝฝๆดๅคๅ่ฝ
- ๐ฏ ๆบ่ฝๆปๅจ็ๅฌ
- ๐ ๅๅง็ๆฌๅๅธ
- ๐ซ ้ปๅๅ่ฟๆปค
- ๐๏ธ ่ๅ็ฎก็
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ้กต้ขๅ ่ฝฝ (1s ๅปถ่ฟ) โ
โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโผโโโโโโโโโ
โ ่ฝฎ่ฏขๆฃๆต Discourse โ
โ (ๆฏ 0.5s) โ
โโโโโโโโโโฌโโโโโโโโโ
โ
โโโโโโโโโโผโโโโโโโโโ
โ ๅๅงๅ่ชๅจๅ ่ฝฝ โ
โโโโโโโโโโฌโโโโโโโโโ
โ
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโ
โ โ โ
โโโโโผโโโโ โโโโโผโโโโ โโโโโผโโโโ
โ ่ฟๆปคๅจ โ โ ๆปๅจ็ๅฌ โ โ DOM็ๅฌ โ
โ ็ซๅณ่ฟๆปค โ โ 800px โ โ ๆบ่ฝ่กฅๅ
โ
โโโโโโโโโโ โโโโโโโโโโ โโโโโฌโโโโ
โ
โโโโโโโโโผโโโโโโโโ
โ SPA ่ทฏ็ฑ็ๅฌ โ
โ URL ๅๅๆฃๆต โ
โโโโโโโโโฌโโโโโโโโ
โ
โโโโโโโโโโโโโโดโโโโโโโโโโโโโ
โ โ
โโโโโโโผโโโโโโโ โโโโโโโโโผโโโโโโโ
โ ่ฟๅๅ่กจ้กต โ โ ่ฟๅ
ฅๅธๅญ้กต โ
โ ้ๆฐๅๅงๅ โ โ ๆธ
็็ๅฌๅจ โ
โโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
ๆ ธๅฟๆๆฏ
MutationObserver- ็ๅฌ DOM ๅๅIntersectionObserver- ๆปๅจไฝ็ฝฎ็ๅฌunsafeWindow- ่ฎฟ้ฎ้กต้ขๅฏน่ฑก- Discourse Internal API - ็ดๆฅ่ฐ็จๅ ่ฝฝ
History API- ็ๅฌ SPA ่ทฏ็ฑๅๅ๏ผv4.1.0+๏ผpushState/replaceState- ไธปๅจ่ทฏ็ฑๅๆขpopstate- ๆต่งๅจๅ่ฟ/ๅ้
ๆฌข่ฟ่ดก็ฎ๏ผๅฆๆไฝ ๆไปปไฝๆณๆณๆๅ็ฐไบ bug๏ผ
- ๐ ๆไบค Issue
- ๐ง Fork ้กน็ฎๅนถๆไบค Pull Request
- โญ ็ป้กน็ฎ็นไธช Star
MIT License - ่ช็ฑไฝฟ็จใไฟฎๆนๅๅๅ
ๅฆๆ่ฟไธช่ๆฌๅธฎๅฐไบไฝ ๏ผ่ฏท็ปไธช โญ Star๏ผ
Linux.do ่ฎบๅ โข Tampermonkey โข ้ฎ้ขๅ้ฆ