refresh date: 2026-09-25 robots: noindex
คำอธิบาย
ใช้ chrome.devtools.inspectedWindow API เพื่อโต้ตอบกับหน้าต่างที่ตรวจสอบ: รับรหัสแท็บสำหรับหน้าที่ตรวจสอบ ประเมินโค้ดในบริบทของหน้าต่างที่ตรวจสอบ โหลดหน้าซ้ำ หรือรับรายการทรัพยากรภายในหน้า
ไฟล์ Manifest
ใช้ chrome.devtools.inspectedWindow เพื่อโต้ตอบกับหน้าต่างที่ตรวจสอบ: รับรหัสแท็บสำหรับหน้าเว็บที่ตรวจสอบ ประเมินโค้ดในบริบทของหน้าต่างที่ตรวจสอบ โหลดหน้าเว็บซ้ำ หรือรับรายการทรัพยากรภายในหน้าเว็บ
ดูสรุป API ของเครื่องมือสำหรับนักพัฒนาเว็บเพื่อดูข้อมูลเบื้องต้นทั่วไปเกี่ยวกับการใช้ API ของเครื่องมือสำหรับนักพัฒนาเว็บ
ภาพรวม
พร็อพเพอร์ตี้ tabId จะระบุตัวระบุแท็บที่คุณใช้กับการเรียก API chrome.tabs.* ได้ อย่างไรก็ตาม โปรดทราบว่า API chrome.tabs.* จะไม่แสดงในหน้าส่วนขยายเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์เนื่องจากข้อควรพิจารณาด้านความปลอดภัย คุณจะต้องส่งรหัสแท็บไปยังหน้าพื้นหลังและเรียกใช้ฟังก์ชัน API chrome.tabs.* จากที่นั่น
อาจใช้เมธอด reload เพื่อโหลดหน้าที่ตรวจสอบซ้ำ นอกจากนี้ ผู้เรียกยังสามารถระบุการลบล้างสำหรับสตริง User Agent, สคริปต์ที่จะแทรกตั้งแต่เนิ่นๆ เมื่อการโหลดหน้าเว็บ หรือตัวเลือกเพื่อบังคับให้โหลดทรัพยากรที่แคชไว้อีกครั้ง
ใช้การเรียก getResources และเหตุการณ์ onResourceContent เพื่อรับรายการทรัพยากร (เอกสาร สไตล์ชีต สคริปต์ รูปภาพ ฯลฯ) ภายในหน้าที่ตรวจสอบ คุณสามารถใช้เมธอด getContent และ setContent ของคลาส Resource ร่วมกับเหตุการณ์ onResourceContentCommitted เพื่อรองรับการแก้ไขเนื้อหาของทรัพยากร เช่น โดยเครื่องมือแก้ไขภายนอก
การเรียกใช้โค้ดในหน้าต่างที่ตรวจสอบ
เมธอด eval ช่วยให้ส่วนขยายเรียกใช้โค้ด JavaScript ในบริบทของหน้าที่ตรวจสอบได้ วิธีนี้มีประสิทธิภาพมากเมื่อใช้ในบริบทที่เหมาะสม และเป็นอันตรายเมื่อใช้ไม่เหมาะสม ใช้เมธอด tabs.executeScript เว้นแต่คุณจะต้องการฟังก์ชันการทำงานที่เฉพาะเจาะจงซึ่งเมธอด eval มีให้
ความแตกต่างหลักระหว่างเมธอด eval และ tabs.executeScript มีดังนี้
- เมธอด
evalไม่ได้ใช้ Isolated World สำหรับโค้ดที่กำลังประเมิน ดังนั้นโค้ดจึงเข้าถึงสถานะ JavaScript ของหน้าต่างที่ตรวจสอบได้ ใช้วิธีนี้เมื่อจำเป็นต้องเข้าถึงสถานะ JavaScript ของหน้าที่ตรวจสอบ - บริบทการดำเนินการของโค้ดที่ประเมินรวมถึง API คอนโซลเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์
เช่น โค้ดสามารถใช้
inspectและ$0 - โค้ดที่ประเมินอาจแสดงผลค่าที่ส่งไปยัง Callback ของส่วนขยาย ค่าที่แสดงผลต้องเป็นออบเจ็กต์ JSON ที่ถูกต้อง (อาจมีเฉพาะประเภท JavaScript พื้นฐานและการอ้างอิงแบบอะไซคลิกไปยังออบเจ็กต์ JSON อื่นๆ) โปรดใช้ความระมัดระวังเป็นพิเศษขณะประมวลผลข้อมูลที่ได้รับจากหน้าที่ตรวจสอบ เนื่องจากบริบทการดำเนินการจะควบคุมโดยหน้าที่ตรวจสอบเป็นหลัก หน้าเว็บที่เป็นอันตรายอาจส่งผลต่อข้อมูลที่ส่งกลับไปยังส่วนขยาย
โปรดทราบว่าหน้าเว็บหนึ่งๆ อาจมีบริบทการดำเนินการ JavaScript ที่แตกต่างกันหลายบริบท แต่ละเฟรมมีบริบทของตัวเอง รวมถึงบริบทเพิ่มเติมสำหรับส่วนขยายแต่ละรายการที่มีสคริปต์เนื้อหาทำงานอยู่ในเฟรมนั้น
โดยค่าเริ่มต้น เมธอด eval จะทำงานในบริบทของเฟรมหลักของหน้าที่ตรวจสอบ
เมธอด eval จะรับอาร์กิวเมนต์ที่ 2 ที่ไม่บังคับ ซึ่งคุณใช้ระบุบริบทที่โค้ดได้รับการประเมินได้ ออบเจ็กต์ options นี้มีคีย์ต่อไปนี้อย่างน้อย 1 คีย์
frameURL- ใช้เพื่อระบุเฟรมอื่นนอกเหนือจากเฟรมหลักของหน้าที่ตรวจสอบ
contextSecurityOrigin- ใช้เพื่อเลือกบริบทภายในเฟรมที่ระบุตามต้นทางเว็บ
useContentScriptContext- หากเป็นจริง ให้เรียกใช้สคริปต์ในบริบทเดียวกับสคริปต์เนื้อหาของส่วนขยาย (เทียบเท่ากับการระบุต้นทางเว็บของส่วนขยายเองเป็นต้นทางความปลอดภัยของบริบท) ซึ่งสามารถใช้เพื่อแลกเปลี่ยนข้อมูลกับสคริปต์เนื้อหาได้
ตัวอย่าง
โค้ดต่อไปนี้จะตรวจสอบเวอร์ชันของ jQuery ที่หน้าเว็บที่ตรวจสอบใช้
chrome.devtools.inspectedWindow.eval(
"jQuery.fn.jquery",
function(result, isException) {
if (isException) {
console.log("the page is not using jQuery");
} else {
console.log("The page is using jQuery v" + result);
}
}
);
หากต้องการลองใช้ API นี้ ให้ติดตั้งตัวอย่าง API เครื่องมือสำหรับนักพัฒนาเว็บจากที่เก็บ chrome-extension-samples
ประเภท
Resource
ทรัพยากรภายในหน้าที่ตรวจสอบ เช่น เอกสาร สคริปต์ หรือรูปภาพ
พร็อพเพอร์ตี้
-
URL
สตริง
URL ของทรัพยากร
-
getContent
void
Promiseรับเนื้อหาของทรัพยากร
ฟังก์ชัน
getContentจะมีลักษณะดังนี้(callback?: function) => {...}
-
callback
function ไม่บังคับ
พารามิเตอร์
callbackจะมีลักษณะดังนี้(response: object) => void
-
การตอบกลับ
ออบเจ็กต์
Chrome 151 ขึ้นไปออบเจ็กต์ที่มีเนื้อหาทรัพยากรและการเข้ารหัส
-
เนื้อหา
สตริง
เนื้อหาของทรัพยากร (อาจเข้ารหัส)
-
การเข้ารหัส
สตริง
เว้นว่างไว้หากเนื้อหาไม่ได้เข้ารหัส หรือระบุชื่อการเข้ารหัส ปัจจุบันรองรับเฉพาะ base64 เท่านั้น
-
-
-
returns
Promise<object>
Chrome 151 ขึ้นไปฟังก์ชันที่รับเนื้อหาทรัพยากรเมื่อคำขอเสร็จสมบูรณ์
ระบบรองรับ Promise สำหรับ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้ Callback
-
-
setContent
void
Promiseตั้งค่าเนื้อหาของทรัพยากร
ฟังก์ชัน
setContentจะมีลักษณะดังนี้(content: string, commit: boolean, callback?: function) => {...}
-
เนื้อหา
สตริง
เนื้อหาใหม่ของทรัพยากร ปัจจุบันรองรับเฉพาะแหล่งข้อมูลที่มีประเภทข้อความเท่านั้น
-
คอมมิต
บูลีน
เป็นจริงหากผู้ใช้แก้ไขทรัพยากรเสร็จแล้ว และควรคงเนื้อหาใหม่ของทรัพยากรไว้ เป็นเท็จหากเป็นการเปลี่ยนแปลงเล็กน้อยที่ส่งระหว่างที่ผู้ใช้แก้ไขทรัพยากร
-
callback
function ไม่บังคับ
พารามิเตอร์
callbackจะมีลักษณะดังนี้(error?: object) => void
-
ข้อผิดพลาด
object ไม่บังคับ
ตั้งค่าเป็น "ไม่ได้กำหนด" หากตั้งค่าเนื้อหาทรัพยากรสำเร็จ หรืออธิบายข้อผิดพลาดในกรณีอื่นๆ
-
-
returns
Promise<object>
Chrome 151 ขึ้นไปฟังก์ชันที่เรียกใช้เมื่อคำขอเสร็จสมบูรณ์
ระบบรองรับ Promise สำหรับ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้ Callback
-
พร็อพเพอร์ตี้
tabId
รหัสของแท็บที่กำลังตรวจสอบ รหัสนี้อาจใช้กับ chrome.tabs.* API
ประเภท
ตัวเลข
เมธอด
eval()
chrome.devtools.inspectedWindow.eval(
expression: string,
options?: object,
callback?: function,
): Promise<object>
ประเมินนิพจน์ JavaScript ในบริบทของเฟรมหลักของหน้าที่ตรวจสอบ นิพจน์ต้องประเมินเป็นออบเจ็กต์ที่สอดคล้องกับ JSON ไม่เช่นนั้นจะมีการส่งข้อยกเว้น ฟังก์ชัน eval สามารถรายงานข้อผิดพลาดฝั่งเครื่องมือสำหรับนักพัฒนาเว็บหรือข้อยกเว้น JavaScript ที่เกิดขึ้นระหว่างการประเมินได้ ไม่ว่าในกรณีใด พารามิเตอร์ result ของ Callback จะเป็น undefined ในกรณีที่เกิดข้อผิดพลาดฝั่งเครื่องมือสำหรับนักพัฒนาเว็บ พารามิเตอร์ isException จะไม่เป็นค่าว่างและมีการตั้งค่า isError เป็น "จริง" และตั้งค่า code เป็นรหัสข้อผิดพลาด ในกรณีที่เกิดข้อผิดพลาด JavaScript ระบบจะตั้งค่า isException เป็น "จริง" และตั้งค่า value เป็นค่าสตริงของออบเจ็กต์ที่ส่ง
พารามิเตอร์
-
นิพจน์
สตริง
นิพจน์ที่จะประเมิน
-
ตัวเลือก
object ไม่บังคับ
พารามิเตอร์ options มีตัวเลือกได้มากกว่า 1 รายการ
-
frameURL
สตริง ไม่บังคับ
หากระบุ ระบบจะประเมินนิพจน์ใน iframe ที่มี URL ตรงกับที่ระบุไว้ โดยค่าเริ่มต้น ระบบจะประเมินนิพจน์ในเฟรมบนสุดของหน้าที่ตรวจสอบ
-
scriptExecutionContext
สตริง ไม่บังคับ
Chrome 107 ขึ้นไปประเมินนิพจน์ในบริบทของสคริปต์เนื้อหาของส่วนขยายที่ตรงกับต้นทางที่ระบุ หากระบุ scriptExecutionContext จะลบล้างการตั้งค่า "จริง" ใน useContentScriptContext
-
useContentScriptContext
บูลีน ไม่บังคับ
ประเมินนิพจน์ในบริบทของสคริปต์เนื้อหาของส่วนขยายที่เรียก โดยมีเงื่อนไขว่าสคริปต์เนื้อหาได้รับการแทรกลงในหน้าที่ตรวจสอบแล้ว หากไม่ ระบบจะไม่ประเมินนิพจน์และจะเรียกใช้ Callback โดยตั้งค่าพารามิเตอร์ข้อยกเว้นเป็นออบเจ็กต์ที่มีช่อง
isErrorตั้งค่าเป็น true และช่องcodeตั้งค่าเป็นE_NOTFOUND
-
-
callback
function ไม่บังคับ
พารามิเตอร์
callbackจะมีลักษณะดังนี้(response: object) => void
-
การตอบกลับ
ออบเจ็กต์
Chrome 151 ขึ้นไปผลลัพธ์ของการประเมินและข้อมูลข้อยกเว้น
-
exceptionInfo
ออบเจ็กต์
ออบเจ็กต์ที่ให้รายละเอียดหากเกิดข้อยกเว้นขณะประเมินนิพจน์
-
รหัส
สตริง
ตั้งค่าหากเกิดข้อผิดพลาดในฝั่งเครื่องมือสำหรับนักพัฒนาเว็บก่อนที่จะประเมินนิพจน์
-
คำอธิบาย
สตริง
ตั้งค่าหากเกิดข้อผิดพลาดในฝั่งเครื่องมือสำหรับนักพัฒนาเว็บก่อนที่จะประเมินนิพจน์
-
รายละเอียด
any[]
ตั้งค่าหากเกิดข้อผิดพลาดในฝั่ง DevTools ก่อนที่จะประเมินนิพจน์ โดยมีอาร์เรย์ของค่าที่อาจแทนที่ลงในสตริงคำอธิบายเพื่อให้ข้อมูลเพิ่มเติมเกี่ยวกับสาเหตุของข้อผิดพลาด
-
isError
บูลีน
ตั้งค่าหากเกิดข้อผิดพลาดในฝั่งเครื่องมือสำหรับนักพัฒนาเว็บก่อนที่จะประเมินนิพจน์
-
isException
บูลีน
ตั้งค่าหากโค้ดที่ประเมินสร้างข้อยกเว้นที่ไม่ได้จัดการ
-
value
สตริง
ตั้งค่าหากโค้ดที่ประเมินสร้างข้อยกเว้นที่ไม่ได้จัดการ
-
-
ผลลัพธ์
ออบเจ็กต์
ผลการประเมิน
-
-
การคืนสินค้า
-
Promise<object>
Chrome 151 ขึ้นไปฟังก์ชันที่เรียกใช้เมื่อการประเมินเสร็จสมบูรณ์
ระบบรองรับ Promise สำหรับ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้ Callback
getResources()
chrome.devtools.inspectedWindow.getResources(
callback?: function,
): Promise<Resource[]>
ดึงข้อมูลรายการทรัพยากรจากหน้าที่ตรวจสอบ
พารามิเตอร์
การคืนสินค้า
-
Promise<Resource[]>
Chrome 151 ขึ้นไปฟังก์ชันที่รับรายการทรัพยากรเมื่อคำขอเสร็จสมบูรณ์
ระบบรองรับ Promise สำหรับ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้ Callback
reload()
chrome.devtools.inspectedWindow.reload(
reloadOptions?: object,
): void
โหลดหน้าเว็บที่ตรวจสอบซ้ำ
พารามิเตอร์
-
reloadOptions
object ไม่บังคับ
-
ignoreCache
บูลีน ไม่บังคับ
เมื่อเป็นจริง ตัวโหลดจะข้ามแคชสำหรับทรัพยากรหน้าเว็บที่ตรวจสอบทั้งหมดที่โหลดก่อนเหตุการณ์
loadจะเริ่มทำงาน ผลลัพธ์จะคล้ายกับการกด Ctrl+Shift+R ในหน้าต่างที่ตรวจสอบหรือภายในหน้าต่างเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ -
injectedScript
สตริง ไม่บังคับ
หากระบุไว้ ระบบจะแทรกสคริปต์ลงในทุกเฟรมของหน้าที่ตรวจสอบทันทีที่โหลด ก่อนสคริปต์ของเฟรมใดๆ ระบบจะไม่แทรกสคริปต์หลังจากโหลดซ้ำในภายหลัง เช่น หากผู้ใช้กด Ctrl+R
-
userAgent
สตริง ไม่บังคับ
หากระบุ สตริงจะลบล้างค่าของส่วนหัว HTTP
User-Agentที่ส่งขณะโหลดทรัพยากรของหน้าที่ตรวจสอบ สตริงจะลบล้างค่าของพร็อพเพอร์ตี้navigator.userAgentที่แสดงผลไปยังสคริปต์ที่ทำงานภายในหน้าที่ตรวจสอบด้วย
-
กิจกรรม
onResourceAdded
chrome.devtools.inspectedWindow.onResourceAdded.addListener(
callback: function,
)
เริ่มทำงานเมื่อมีการเพิ่มทรัพยากรใหม่ลงในหน้าที่ตรวจสอบ
พารามิเตอร์
-
callback
ฟังก์ชัน
พารามิเตอร์
callbackจะมีลักษณะดังนี้(resource: Resource) => void
-
แหล่งข้อมูล
-
onResourceContentCommitted
chrome.devtools.inspectedWindow.onResourceContentCommitted.addListener(
callback: function,
)
เริ่มทำงานเมื่อมีการคอมมิตการแก้ไขใหม่ของทรัพยากร (เช่น ผู้ใช้บันทึกทรัพยากรเวอร์ชันที่แก้ไขในเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์)
พารามิเตอร์
-
callback
ฟังก์ชัน
พารามิเตอร์
callbackจะมีลักษณะดังนี้(resource: Resource, content: string) => void
-
แหล่งข้อมูล
-
เนื้อหา
สตริง
-