ทุกส่วนขยายต้องมีไฟล์ manifest.json ในไดเรกทอรีราก ซึ่งแสดงข้อมูลสำคัญเกี่ยวกับโครงสร้างและลักษณะการทำงานของส่วนขยายนั้น
หน้านี้จะอธิบายโครงสร้างของไฟล์ Manifest ของส่วนขยายและฟีเจอร์ที่ไฟล์ Manifest สามารถมีได้
ตัวอย่าง
ไฟล์ Manifest ตัวอย่างต่อไปนี้แสดงโครงสร้างพื้นฐานของไฟล์ Manifest และฟีเจอร์ที่ใช้กันโดยทั่วไปเพื่อเป็นจุดเริ่มต้นในการสร้างไฟล์ Manifest ของคุณเอง
ไฟล์ Manifest ขั้นต่ำ
{
"manifest_version": 3,
"name": "Minimal Manifest",
"version": "1.0.0",
"description": "A basic example extension with only required keys",
"icons": {
"48": "images/icon-48.png",
"128": "images/icon-128.png"
}
}
ลงทะเบียนสคริปต์เนื้อหา
{
"manifest_version": 3,
"name": "Run script automatically",
"description": "Runs a script on www.example.com automatically when user installs the extension",
"version": "1.0",
"icons": {
"16": "images/icon-16.png",
"32": "images/icon-32.png",
"48": "images/icon-48.png",
"128": "images/icon-128.png"
},
"content_scripts": [
{
"js": [
"content-script.js"
],
"matches": [
"http://*.example.com//"
]
}
]
}
แทรกสคริปต์เนื้อหา
{
"manifest_version": 3,
"name": "Click to run",
"description": "Runs a script when the user clicks the action toolbar icon.",
"version": "1.0",
"icons": {
"16": "images/icon-16.png",
"32": "images/icon-32.png",
"48": "images/icon-48.png",
"128": "images/icon-128.png"
},
"background": {
"service_worker": "service-worker.js"
},
"action": {
"default_icon": {
"16": "images/icon-16.png",
"32": "images/icon-32.png",
"48": "images/icon-48.png",
"128": "images/icon-128.png"
}
},
"permissions": ["scripting", "activeTab"]
}
ป๊อปอัปที่มีสิทธิ์
{
"manifest_version": 3,
"name": "Popup extension that requests permissions",
"description": "Extension that includes a popup and requests host permissions and storage permissions.",
"version": "1.0",
"icons": {
"16": "images/icon-16.png",
"32": "images/icon-32.png",
"48": "images/icon-48.png",
"128": "images/icon-128.png"
},
"action": {
"default_popup": "popup.html"
},
"host_permissions": [
"https://*.example.com/"
],
"permissions": [
"storage"
]
}
แผงด้านข้าง
{
"manifest_version": 3,
"name": "Side panel extension",
"version": "1.0",
"description": "Extension with a default side panel.",
"icons": {
"16": "images/icon-16.png",
"48": "images/icon-48.png",
"128": "images/icon-128.png"
},
"side_panel": {
"default_path": "sidepanel.html"
},
"permissions": ["sidePanel"]
}
คีย์ไฟล์ Manifest
ต่อไปนี้คือรายการคีย์ไฟล์ Manifest ทั้งหมดที่รองรับ
คีย์ที่แพลตฟอร์มส่วนขยายกำหนด
"manifest_version"- จำนวนเต็มที่ระบุเวอร์ชันของรูปแบบไฟล์ Manifest ที่ส่วนขยายใช้ ค่าที่รองรับมีเพียง
3 "name"- สตริงที่ระบุส่วนขยายในChrome เว็บ
สโตร์ กล่องโต้ตอบการติดตั้ง และ
หน้าส่วนขยายของ Chrome (
chrome://extensions) ความ ยาวสูงสุดคือ 75 อักขระ ดูข้อมูลเกี่ยวกับการใช้ชื่อเฉพาะภาษาได้ที่หัวข้อ ดู การแปลเป็นภาษาต่างๆ "version"- สตริงที่ระบุหมายเลขเวอร์ชันของส่วนขยาย ดูข้อมูลเกี่ยวกับการจัดรูปแบบหมายเลขเวอร์ชันได้ที่หัวข้อ เวอร์ชัน
คีย์ที่ Chrome เว็บสโตร์กำหนด
"description"- สตริงที่อธิบายส่วนขยายทั้งใน Chrome เว็บสโตร์และหน้าการจัดการส่วนขยายของผู้ใช้ ความยาวสูงสุดคือ 132 อักขระ ดูข้อมูลเกี่ยวกับการแปลคำอธิบายเป็นภาษาต่างๆ ได้ที่หัวข้อ การแปลเป็นภาษาต่างๆ
"icons"- ไอคอนอย่างน้อย 1 รายการที่แสดงส่วนขยาย ดูข้อมูลเกี่ยวกับแนวทางปฏิบัติแนะนำได้ที่หัวข้อIcons
คีย์ที่ไม่บังคับ
"action"- กำหนดลักษณะที่ปรากฏและลักษณะการทำงานของไอคอนส่วนขยายในแถบเครื่องมือของ Google ดูข้อมูลเพิ่มเติมได้ที่
chrome.action "background"- ระบุไฟล์ JavaScript ที่มี Service Worker ของส่วนขยาย ซึ่งทำหน้าที่เป็นตัวจัดการเหตุการณ์ ดูข้อมูลเพิ่มเติมได้ที่หัวข้อเกี่ยวกับ Service Worker ของส่วนขยาย
"chrome_settings_overrides"- กำหนดการลบล้างการตั้งค่า Chrome ที่เลือก ดูข้อมูลเพิ่มเติมได้ที่หัวข้อ การลบล้างการตั้งค่า Chrome
"chrome_url_overrides"- กำหนดการลบล้างหน้าเริ่มต้นของ Chrome ดูข้อมูลเพิ่มเติมได้ที่หัวข้อ การลบล้างหน้า Chrome
"commands"- กำหนดแป้นพิมพ์ลัดภายในส่วนขยาย ดูข้อมูลเพิ่มเติมได้ที่ chrome.commands
"content_scripts"- ระบุไฟล์ JavaScript หรือ CSS ที่จะใช้เมื่อผู้ใช้เปิดหน้าเว็บบางหน้า ดูข้อมูลเพิ่มเติมได้ที่หัวข้อสคริปต์เนื้อหา
"content_security_policy"- กำหนดข้อจำกัดเกี่ยวกับสคริปต์ สไตล์ และทรัพยากรอื่นๆ ที่ส่วนขยายใช้ได้ ดูข้อมูลเพิ่มเติมได้ที่หัวข้อนโยบายความปลอดภัยของเนื้อหา
"cross_origin_embedder_policy"- ระบุค่าสำหรับส่วนหัว HTTP Cross-Origin-Embedder-Policy ซึ่งกำหนดค่าการฝังทรัพยากรแบบข้ามต้นทางในหน้าส่วนขยาย
"cross_origin_opener_policy"- ระบุค่าสำหรับส่วนหัว HTTP Cross-Origin-Opener-Policy ซึ่งช่วยให้คุณมั่นใจได้ว่าหน้าส่วนขยายระดับบนสุดจะไม่แชร์กลุ่มบริบทการท่องเว็บกับเอกสารแบบข้ามต้นทาง
"declarative_net_request"- กำหนดกฎแบบคงที่สำหรับ declarativeNetRequest API ซึ่งอนุญาตให้บล็อกและแก้ไขคำขอเครือข่าย
"default_locale"- สตริงที่กำหนดภาษาเริ่มต้นของส่วนขยายที่รองรับหลายภาษา ตัวอย่างเช่น "en" และ "pt_BR" คีย์นี้จำเป็นในส่วนขยายที่แปลเป็นภาษาต่างๆ และต้องไม่ใช้ในส่วนขยายที่ไม่ได้แปล ดูข้อมูลเพิ่มเติมได้ที่หัวข้อ การแปลเป็นภาษาต่างๆ
"devtools_page"- กำหนดหน้าที่ใช้ DevTools API
"export"- อนุญาตให้ส่งออกทรัพยากรจากส่วนขยาย ดูข้อมูลเพิ่มเติมได้ที่หัวข้อ การส่งออก
"externally_connectable"- ระบุหน้าเว็บและส่วนขยายอื่นๆ ที่สามารถเชื่อมต่อกับส่วนขยายของคุณได้ ดูข้อมูลเพิ่มเติมได้ที่
"externally_connectable" "homepage_url"- สตริงที่ระบุ URL สำหรับหน้าแรกของส่วนขยาย หากไม่ได้กำหนดไว้ หน้าแรกจะแสดงเป็นหน้า Chrome เว็บสโตร์ของส่วนขยายโดยค่าเริ่มต้น ช่องนี้มีประโยชน์อย่างยิ่งหากคุณ โฮสต์ส่วนขยาย ในเว็บไซต์ของคุณเอง
"host_permissions"- แสดงรายการหน้าเว็บที่ส่วนขยายได้รับอนุญาตให้โต้ตอบด้วย ซึ่งกำหนดโดยใช้รูปแบบการจับคู่ URL ระบบจะขอการให้สิทธิ์จากผู้ใช้สำหรับเว็บไซต์เหล่านี้ในระหว่างการติดตั้ง ดูข้อมูลเพิ่มเติมได้ที่หัวข้อสิทธิ์ของโฮสต์
"import"- อนุญาตให้นำเข้าทรัพยากรลงในส่วนขยาย ดูข้อมูลเพิ่มเติมได้ที่หัวข้อ การนำเข้า
"incognito"- กำหนดลักษณะการทำงานของส่วนขยายในโหมดไม่ระบุตัวตน ค่าที่รองรับคือ
"spanning","split"และ"not_allowed"ดูข้อมูลเพิ่มเติมได้ที่หัวข้อ โหมดไม่ระบุตัวตน "key"- ระบุรหัสของส่วนขยายสำหรับกรณีการใช้งานในการพัฒนาต่างๆ ดูข้อมูลเพิ่มเติมได้ที่หัวข้อคีย์
"minimum_chrome_version"- กำหนด Chrome เวอร์ชันเก่าที่สุดที่สามารถติดตั้งส่วนขยายของคุณได้ ค่า
ต้องเป็นสตริงย่อยของสตริงเวอร์ชันเบราว์เซอร์ Chrome ที่มีอยู่ เช่น
"107"หรือ"107.0.5304.87"ผู้ใช้ที่ใช้ Chrome เวอร์ชันเก่ากว่าเวอร์ชันขั้นต่ำจะเห็นคำเตือน "ไม่เข้ากัน" ใน Chrome เว็บสโตร์ และจะติดตั้งส่วนขยายของคุณไม่ได้ หากคุณเพิ่มคีย์นี้ลงในส่วนขยายที่มีอยู่ ผู้ใช้ที่ใช้ Chrome เวอร์ชันเก่ากว่าจะไม่ได้รับการอัปเดตส่วนขยายของคุณโดยอัตโนมัติ ซึ่งรวมถึงผู้ใช้แบบธุรกิจใน โหมดชั่วคราวด้วย "oauth2"- อนุญาตให้ใช้รหัสความปลอดภัย OAuth 2.0 ค่าของคีย์นี้ต้องเป็น
ออบเจ็กต์ที่มี
"client_id"และ"scopes"พร็อพเพอร์ตี้ ดูรายละเอียดได้ที่บทแนะนำเกี่ยวกับ OAuth 2.0 "omnibox"- อนุญาตให้ส่วนขยายลงทะเบียนคีย์เวิร์ดในแถบที่อยู่ของ Chrome ดูข้อมูลเพิ่มเติมได้ที่ หัวข้อแถบอเนกประสงค์
"optional_host_permissions"- ประกาศสิทธิ์ของโฮสต์ ที่ไม่บังคับสำหรับ ส่วนขยาย
"optional_permissions"- ประกาศสิทธิ์ที่ไม่บังคับสำหรับส่วนขยาย
"options_page"- ระบุเส้นทางไปยังไฟล์ options.html ที่ส่วนขยายจะใช้เป็นหน้าตัวเลือก ดูข้อมูลเพิ่มเติมได้ที่หัวข้อให้ตัวเลือกแก่ผู้ใช้
"options_ui"- ระบุเส้นทางไปยังไฟล์ HTML ที่ช่วยให้ผู้ใช้เปลี่ยนตัวเลือกส่วนขยายจากหน้าส่วนขยายของ Chrome ได้ ดูข้อมูลเพิ่มเติมได้ที่หัวข้อตัวเลือกที่ฝัง
"permissions"- เปิดใช้การใช้ API ส่วนขยายบางรายการ ดูคำอธิบายทั่วไปได้ที่หัวข้อสิทธิ์ หน้าอ้างอิงสำหรับ API แต่ละรายการจะแสดงสิทธิ์ที่ API นั้นๆ กำหนด
"requirements"- แสดงรายการเทคโนโลยีที่จำเป็นในการใช้ส่วนขยาย ดูรายการข้อกำหนดที่รองรับได้ที่ หัวข้อข้อกำหนด
"sandbox"- กำหนดชุดหน้าส่วนขยายที่ไม่มีสิทธิ์เข้าถึง API ส่วนขยายหรือเข้าถึงหน้าที่ไม่ใช่ Sandbox โดยตรง ดูข้อมูลเพิ่มเติมได้ที่หัวข้อ Sandbox
"short_name"- สตริงที่มีชื่อส่วนขยายเวอร์ชันย่อที่จะใช้เมื่อมีพื้นที่อักขระจำกัด ความยาวสูงสุดคือ 12 อักขระ หากไม่ได้กำหนดไว้ ระบบจะแสดงเวอร์ชันที่ตัดทอนของคีย์ "name" แทน
"side_panel"- ระบุไฟล์ HTML ที่จะแสดงใน sidePanel.
"storage"- ประกาศสคีมา JSON สำหรับพื้นที่เก็บข้อมูลที่มีการจัดการ ดูข้อมูลเพิ่มเติมได้ที่ หัวข้อไฟล์ Manifest สำหรับพื้นที่เก็บข้อมูล
"tts_engine"- ลงทะเบียนส่วนขยายเป็นระบบการอ่านออกเสียงข้อความ ดูข้อมูลเพิ่มเติมได้ที่ ttsEngine API
"update_url"- สตริงที่มี URL ของหน้าการอัปเดตส่วนขยาย ใช้คีย์นี้หาก คุณโฮสต์ส่วนขยาย ภายนอก Chrome เว็บสโตร์
"version_name"- สตริงที่อธิบายเวอร์ชันของส่วนขยาย ตัวอย่างเช่น
"1.0 beta"และ"build rc2"หากไม่ได้ระบุไว้ ระบบจะแสดงค่า "version" ในหน้าการจัดการส่วนขยายแทน "web_accessible_resources"- กำหนดไฟล์ภายในส่วนขยายที่หน้าเว็บหรือส่วนขยายอื่นๆ เข้าถึงได้ ดูข้อมูลเพิ่มเติมได้ที่หัวข้อ ทรัพยากรที่เข้าถึงได้จากเว็บ
คีย์ ChromeOS ที่ไม่บังคับ
"file_browser_handlers"- ให้สิทธิ์เข้าถึง
fileBrowserHandlerAPI ซึ่งช่วยให้ส่วนขยายเข้าถึงโปรแกรมเรียกดูไฟล์ของ ChromeOS ได้ "file_handlers"- ระบุประเภทไฟล์ที่ส่วนขยาย ChromeOS จะจัดการ ดูข้อมูลเพิ่มเติมได้ที่
ดู
file_handlers. "file_system_provider_capabilities"- ให้สิทธิ์เข้าถึง
fileSystemProviderAPI ซึ่งช่วยให้ส่วนขยายสร้างระบบไฟล์ที่ ChromeOS ใช้ได้ "input_components"- อนุญาตให้ใช้ Input Method Editor API ดูข้อมูลเพิ่มเติมได้ที่
input_components