Image from https://news.thaiware.com/17797.html
จริง ๆ ไม่ได้มีทฤษฎีอะไรหรอก แค่วันนั้นโกรธให้กับเอกสารของ redis.io เลยเป็นที่มาของการทำ Google Chrome Extension ง่าย ๆ เอาไว้ใช้เอง
ไหน ๆ ก็ทำไปล่ะ เลยเอามาเขียนเป็นบทความเก็บไว้
เราสามารถเขียน Google Chrome Extension อย่างง่ายขึ้นมาใช้งานได้เอง โดยใช้แค่ Skill พื้นฐาน HTML, CSS และ Javascript ดังนี้
manifest.json
- Icon สำหรับแสดงบน Bar ของ Google Chrome ขนาด 128 x 128 pixel
- อื่น ๆ เช่น HTML, CSS และ Javascript (ถ้าใช้)
ไฟล์
manifest.json
คือไฟล์หลักที่ใช้ในการอธิบาย กำหนดสิทธิ์และการทำงานต่าง ๆ ของ Extension
manifest.json
{
"name": "<YOUR_EXTENSION_NAME>",
"version": "<YOUR_EXTENSION_VERSION>",
"description": "<YOUR_EXTENSION_DESCRIPTION>",
"manifest_version": 2,
"icons": {
"128": "<YOUR_ICON_128_PIXEL>"
}
}
แก้ใหม่เป็นของเราเอง เช่น
manifest.json
{
"name": "CSS for redis.io",
"version": "1.2",
"description": "Easy to read redis.io documents",
"manifest_version": 2,
"icons": {
"128": "redis128.png"
}
}
ทำความเข้าใจกันก่อน
เราสามารถกำหนดได้ว่าจะให้ Extension ทำงานตอนไหน เช่น
- ให้ทำงานตอนคลิกที่ Icon Extention หรือ
- ให้ทำงานทันทีตอนที่ Web Page โหลดเสร็จ
ให้เขียน manifest.json ดังนี้
manifest.json
{
"name": "CSS for redis.io",
"version": "1.0",
"description": "Easy to read redis.io documents",
"manifest_version": 2,
"icons": {
"128": "redis128.png"
},
"browser_action": {
"default_title": "CSS for redis.io",
"default_popup": "popup.html"
},
"permissions": [
"https://redis.io/*"
]
}
คำอธิบาย
browser_action
เป็นส่วนที่จะทำงานก็ต่อเมื่อ มีการคลิกที่ Icon Extension (ถ้าไม่คลิก ตัว Extension จะไม่ทำงาน)default_title
ถ้าเราเอา Mouse ไป Hover ที่ Icon จะแสดงข้อความที่กำหนดไว้ขึ้นมา (เหมือน Attributetitle
ใน HTML Tag ทั่ว ๆ ไป)default_popup
เป็น Popup ที่แสดงขึ้นมาใต้ Icon ตอนที่เราคลิกที่ Icon (อันนี้ Custom HTML, CSS, Javascript เองตามใจชอบได้เลย)
permissions
เป็นการกำหนด Permission ให้กับ Extension นี้ จากตัวอย่างด้านบน เป็นการบอกว่า Extension นี้ จะทำงานเฉพาะบนทุกหน้าจอของ Web Site https://redi.io เท่านั้น (Web Site อื่น ๆ Extension นี้จะไม่ทำงาน)
ให้เขียน manifest.json ดังนี้
manifest.json
{
"name": "CSS for redis.io",
"version": "1.2",
"description": "Easy to read redis.io documents",
"manifest_version": 2,
"content_scripts": [
{
"matches": [
"https://redis.io/*"
],
"js": [
"script.js"
],
"css": [
"redis.io.css"
]
}
],
"icons": {
"128": "redis128.png"
}
}
คำอธิบาย
content_scripts
จะเป็นส่วนที่ทำงานทันทีหลังจากที่ Web Page โหลดเสร็จmatches
ให้ทำงานกับ Web Site ไหน จากตัวอย่างจะทำงานเฉพาะกับ Web Site https://redi.io เท่านั้นjs
ให้เรียกไฟล์ Javascript ใน List นี้ให้ทำงานทันทีcss
ให้เรียกไฟล์ CSS ใน List นี้ให้ทำงานทันที
อันนี้เป็นตัวอย่าง Google Chrome Extension อย่างง่ายที่ผมเขียนไว้ เพื่อเอาไว้อ่านเอกสาร Redis โดยเฉพาะ
ขั้นตอนการติดตั้ง สามารถอ่านได้ตาม README.md ที่เขียนไว้ใน Repository นี้
เมื่อเราเขียน Extension เสร็จแล้ว และอยากเอาขึ้น Web Store ให้ทำดังนี้
ทำการ Zip Folder Extension ที่เราเขียนเสร็จแล้วเป็นไฟล์ .zip
Developer Dashboard
คลิกที่ปุ่มเพิ่มรายการใหม่ จากนั้นอัพโหลดไฟล์ .zip
จากข้อ 1
ใช้เวลาประมาณ 1-3 วัน
- ถ้าผ่าน Extension เราก็จะถูก Published บน Web Store
- แต่ถ้าไม่ผ่าน ก็จะโดน Reject กลับมาให้แก้ใหม่
ตัวอย่าง Extension ที่ตรวจสอบผ่าน จะขึ้นบน Web Store แบบนี้
ผมเคยเอาขึ้น Chrome Web Store น่ะ แต่เอาขึ้นได้เฉพาะการเขียนแบบข้อ 1) ในหัวข้อ กำหนดสิทธิ์และการทำงานของ Extension คือ Extension จะทำงานก็ต่อเมื่อคลิกที่ Icon ก่อน แต่พอผมพยายามเขียนแบบข้อ 2)ให้ทำงานทันทีหลังจาก Web Page โหลดเสร็จ ส่งให้ Google ตรวจสอบใหม่ ก็ปรากฏว่าโดน Reject
มา 2 รอบล่ะ ไม่รู้ว่าติด Permission อะไร ตอนแรกคิดว่าเป็นที่ Code ผมมี Remote Script แต่ก็พยายามแก้แล้วน่ะ ก็ยังโดน Reject อีก ตอนนี้ขี้เกียจแก้ล่ะ ทำไว้ใช้เองก็พอ
ถ้าใครสนใจเขียน Google Chrome Extension ขึ้นมาใช้งานเอง ก็ลองนำไปประยุกต์ใช้กันดูครับ
อันนี้เป็น Version 1.0 ยังไม่ค่อยดีเท่าไหร่ ต้องคลิกที่ Icon ทุกรอบ Extension ถึงจะทำงาน
ถ้าใครอยากจะใช้งาน Extension นี้แบบจริงจัง แนะนำให้ติดตั้งเองจาก GitHub นี้ครับ
เขียนเล่นขำ ๆ
Microsoft Edge ก็สามารถใช้ Extension ที่เราเขียนได้เหมือนกันน่ะ เพราะเป็น Chromium เหมือนกัน
เอกสารการเขียน Google Chrome Extension อย่างละเอียด สามารถเรียนรู้ได้จาก