คำอธิบาย
ใช้ chrome.contentSettings
API เพื่อเปลี่ยนการตั้งค่าที่ควบคุมว่าเว็บไซต์จะใช้ฟีเจอร์ต่างๆ เช่น คุกกี้, JavaScript และปลั๊กอินได้หรือไม่ กล่าวโดยทั่วไปคือ การตั้งค่าเนื้อหาช่วยให้คุณปรับแต่งการทำงานของ Chrome สำหรับแต่ละไซต์ได้แทนที่จะกำหนดค่าทั้งหมดทั่วโลก
สิทธิ์
contentSettings
ไฟล์ Manifest
คุณต้องประกาศ "contentSettings" สิทธิ์ในไฟล์ Manifest ของส่วนขยายเพื่อใช้ API สำหรับ ตัวอย่าง:
{
"name": "My extension",
...
"permissions": [
"contentSettings"
],
...
}
รูปแบบการตั้งค่าเนื้อหา
คุณสามารถใช้รูปแบบเพื่อระบุเว็บไซต์ที่การตั้งค่าเนื้อหาแต่ละรายการมีผล ตัวอย่างเช่น
https://*.youtube.com/*
ระบุ youtube.com และโดเมนย่อยทั้งหมด ไวยากรณ์สำหรับเนื้อหา
รูปแบบการตั้งค่าจะเหมือนกับรูปแบบการจับคู่ โดยมีความแตกต่างเล็กน้อยดังนี้
- สำหรับ URL
http
,https
และftp
เส้นทางต้องเป็นไวลด์การ์ด (/*
) สำหรับ URL ของfile
เส้นทาง ต้องระบุทั้งหมดและต้องไม่มีไวลด์การ์ด - รูปแบบการตั้งค่าเนื้อหาสามารถระบุหมายเลขพอร์ตได้ ซึ่งตรงข้ามกับการจับคู่รูปแบบ หากพอร์ต ระบุหมายเลข รูปแบบจะจับคู่เฉพาะเว็บไซต์ที่มีพอร์ตนั้น หากไม่มีหมายเลขพอร์ต ที่ระบุ รูปแบบตรงกับพอร์ตทั้งหมด
ลำดับความสำคัญของรูปแบบ
เมื่อมีการใช้กฎการตั้งค่าเนื้อหามากกว่า 1 กฎสำหรับเว็บไซต์หนึ่งๆ กฎที่มีความเฉพาะเจาะจงมากกว่า จะมีความสำคัญเหนือกว่า
ตัวอย่างเช่น รูปแบบต่อไปนี้เรียงลำดับตามลำดับความสำคัญ
https://www.example.com/*
https://*.example.com/*
(ตรงกับ example.com กับโดเมนย่อยทั้งหมด)<all_urls>
(ตรงกับทุก URL)
ไวลด์การ์ดมี 3 ประเภทที่ส่งผลต่อความเจาะจงของรูปแบบ ดังนี้
- ไวลด์การ์ดในพอร์ต (เช่น
https://www.example.com:*/*
) - ไวลด์การ์ดในรูปแบบนี้ (เช่น
*://www.example.com:123/*
) - ไวลด์การ์ดในชื่อโฮสต์ (เช่น
https://*.example.com:123/*
)
ถ้ารูปแบบเฉพาะเจาะจงมากกว่ารูปแบบอื่นในส่วนใดส่วนหนึ่ง แต่เฉพาะเจาะจงน้อยกว่าในอีกส่วนหนึ่ง ส่วนต่างๆ จะได้รับการตรวจสอบตามลำดับ ได้แก่ ชื่อโฮสต์ รูปแบบ และพอร์ต ตัวอย่างเช่น พารามิเตอร์ รูปแบบต่อไปนี้จะเรียงลำดับตามลำดับความสำคัญ
https://www.example.com:*/*
ระบุชื่อโฮสต์และรูปแบบ*:/www.example.com:123/*
ไม่สูงนัก เนื่องจากแม้ว่าจะระบุชื่อโฮสต์ แต่ก็ไม่ได้ระบุรูปแบบhttps://*.example.com:123/*
ต่ำกว่าเนื่องจากแม้จะระบุพอร์ตและรูปแบบ แต่ก็มีไวลด์การ์ดในชื่อโฮสต์
รูปแบบหลักและรอง
URL ที่นำมาพิจารณาเมื่อตัดสินใจว่าจะใช้การตั้งค่าเนื้อหาแบบใดนั้นจะขึ้นอยู่กับประเภทของเนื้อหา
ตัวอย่างเช่น สำหรับการตั้งค่า contentSettings.notifications
จะอิงตาม URL ที่แสดงใน
แถบอเนกประสงค์ URL นี้เรียกว่า "URL หลัก" URL
เนื้อหาบางประเภทอาจนำ URL เพิ่มเติมมาพิจารณาได้ ตัวอย่างเช่น ไซต์ได้รับอนุญาตให้
ตั้งค่า contentSettings.cookies
ตาม URL ของคำขอ HTTP (ซึ่งก็คือ
URL หลักในกรณีนี้) รวมทั้ง URL ที่แสดงในแถบอเนกประสงค์ (ซึ่งเรียกว่า "ลิงก์รอง"
URL)
ถ้ากฎหลายข้อมีรูปแบบหลักและรูปแบบรอง กฎที่มีรูปแบบหลักเฉพาะเจาะจงมากกว่า จะมีความสำคัญเหนือกว่า หากมีกฎหลายข้อมีรูปแบบหลักเหมือนกัน กฎที่มีแอตทริบิวต์ รูปแบบรองที่เฉพาะเจาะจงมากกว่าจะมีความสำคัญเหนือกว่า ตัวอย่างเช่น รายการต่อไปนี้คือ คู่รูปแบบหลัก/รองจะเรียงลำดับตามลำดับความสำคัญดังนี้
ลำดับความสำคัญ | รูปแบบหลัก | รูปแบบรอง |
---|---|---|
1 | https://www.moose.com/* | https://www.wombat.com/* |
2 | https://www.moose.com/* | <all_urls> |
3 | <all_urls> | https://www.wombat.com/* |
4 | <all_urls> | <all_urls> |
ตัวระบุทรัพยากร
ตัวระบุทรัพยากรช่วยให้คุณกำหนดการตั้งค่าเนื้อหาสำหรับประเภทย่อยที่เจาะจงของประเภทเนื้อหาได้
ปัจจุบันประเภทเนื้อหาที่รองรับตัวระบุทรัพยากรมีเพียง contentSettings.plugins
ที่ตัวระบุทรัพยากรระบุปลั๊กอินที่เฉพาะเจาะจง เมื่อใช้การตั้งค่าเนื้อหา ต้องทำดังนี้
สำหรับปลั๊กอินบางอย่างโดยเฉพาะแล้ว หากไม่พบการตั้งค่าสำหรับ
ปลั๊กอิน ระบบจะตรวจสอบการตั้งค่าเนื้อหาทั่วไปสำหรับปลั๊กอิน
ตัวอย่างเช่น หากกฎการตั้งค่าเนื้อหามีตัวระบุทรัพยากร adobe-flash-player
และพารามิเตอร์
รูปแบบ <all_urls>
จะมีความสำคัญเหนือกฎที่ไม่มีตัวระบุทรัพยากรและรูปแบบ
https://www.example.com/*
แม้ว่ารูปแบบนั้นจะเจาะจงมากกว่าก็ตาม
คุณสามารถดูรายการตัวระบุทรัพยากรสำหรับประเภทเนื้อหาโดยการเรียกใช้
contentSettings.ContentSetting.getResourceIdentifiers
รายการที่แสดงผลสามารถเปลี่ยนด้วย
ชุดปลั๊กอินที่ติดตั้งในเครื่องของผู้ใช้ แต่ Chrome จะพยายามรักษาตัวระบุให้คงที่
ในการอัปเดตปลั๊กอินทั้งหมด
ตัวอย่าง
หากต้องการลองใช้ API นี้ ให้ติดตั้งตัวอย่าง ContentSettings API จาก chrome-extension-samples ที่เก็บได้
ประเภท
AutoVerifyContentSetting
ค่าแจกแจง
"อนุญาต"
"บล็อก"
CameraContentSetting
ค่าแจกแจง
"อนุญาต"
"บล็อก"
"ask"
ClipboardContentSetting
ค่าแจกแจง
"อนุญาต"
"บล็อก"
"ask"
ContentSetting
พร็อพเพอร์ตี้
-
ล้าง
เป็นโมฆะ
สัญญาล้างกฎการตั้งค่าเนื้อหาทั้งหมดที่ส่วนขยายนี้กำหนดไว้
ฟังก์ชัน
clear
มีลักษณะดังนี้(details: object, callback?: function) => {...}
-
รายละเอียด
ออบเจ็กต์
-
ขอบเขต
ขอบเขต ไม่บังคับ
ตำแหน่งที่จะล้างการตั้งค่า (ค่าเริ่มต้น: ปกติ)
-
-
Callback
ไม่บังคับ
พารามิเตอร์
callback
มีลักษณะดังนี้() => void
-
returns
คำสัญญา<โมฆะ>
Chrome 96 ขึ้นไปPromise รองรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น ส่วนแพลตฟอร์มอื่นๆ ต้องใช้ Callback
-
-
รับ
เป็นโมฆะ
สัญญารับการตั้งค่าเนื้อหาปัจจุบันสำหรับ URL 2 คู่ที่ระบุ
ฟังก์ชัน
get
มีลักษณะดังนี้(details: object, callback?: function) => {...}
-
รายละเอียด
ออบเจ็กต์
-
ไม่ระบุตัวตน
บูลีน ไม่บังคับ
เลือกว่าจะตรวจสอบการตั้งค่าเนื้อหาสำหรับเซสชันไม่ระบุตัวตนหรือไม่ (ค่าเริ่มต้นเป็นเท็จ)
-
primaryUrl
สตริง
URL หลักที่ควรดึงข้อมูลการตั้งค่าเนื้อหา โปรดทราบว่าความหมายของ URL หลักจะขึ้นอยู่กับประเภทเนื้อหา
-
resourceIdentifier
ResourceIdentifier ไม่บังคับ
ตัวระบุที่เจาะจงมากขึ้นของประเภทเนื้อหาที่ควรดึงข้อมูลการตั้งค่า
-
secondaryUrl
string ไม่บังคับ
URL รองที่ควรเรียกข้อมูลการตั้งค่าเนื้อหา ค่าเริ่มต้นคือ URL หลัก โปรดทราบว่าความหมายของ URL รองขึ้นอยู่กับประเภทเนื้อหา และเนื้อหาบางประเภทใช้ URL รองไม่ได้
-
-
Callback
ไม่บังคับ
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => void
-
รายละเอียด
ออบเจ็กต์
-
การตั้งค่า
T
การตั้งค่าเนื้อหา โปรดดูคำอธิบายของออบเจ็กต์ ContentSetting แต่ละรายการสำหรับค่าที่เป็นไปได้
-
-
-
returns
Promise<object>
Chrome 96 ขึ้นไปPromise รองรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น ส่วนแพลตฟอร์มอื่นๆ ต้องใช้ Callback
-
-
getResourceIdentifiers
เป็นโมฆะ
สัญญาฟังก์ชัน
getResourceIdentifiers
มีลักษณะดังนี้(callback?: function) => {...}
-
Callback
ไม่บังคับ
พารามิเตอร์
callback
มีลักษณะดังนี้(resourceIdentifiers?: ResourceIdentifier[]) => void
-
resourceIdentifiers
ResourceIdentifier[] ไม่บังคับ
รายการตัวระบุทรัพยากรสำหรับประเภทเนื้อหานี้ หรือ
undefined
หากเนื้อหาประเภทนี้ไม่ได้ใช้ตัวระบุทรัพยากร
-
-
returns
สัญญา<ResourceIdentifier[]>
Chrome 96 ขึ้นไปPromise รองรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น ส่วนแพลตฟอร์มอื่นๆ ต้องใช้ Callback
-
-
ตั้งค่า
เป็นโมฆะ
สัญญาใช้กฎการตั้งค่าเนื้อหาใหม่
ฟังก์ชัน
set
มีลักษณะดังนี้(details: object, callback?: function) => {...}
-
รายละเอียด
ออบเจ็กต์
-
primaryPattern
สตริง
รูปแบบของ URL หลัก สำหรับรายละเอียดเกี่ยวกับรูปแบบของรูปแบบ โปรดดูที่รูปแบบการตั้งค่าเนื้อหา
-
resourceIdentifier
ResourceIdentifier ไม่บังคับ
ตัวระบุทรัพยากรสำหรับประเภทเนื้อหา
-
ขอบเขต
ขอบเขต ไม่บังคับ
ตำแหน่งที่ต้องการตั้งค่า (ค่าเริ่มต้น: ปกติ)
-
secondaryPattern
string ไม่บังคับ
รูปแบบของ URL รอง ค่าเริ่มต้นคือตรงกับ URL ทั้งหมด สำหรับรายละเอียดเกี่ยวกับรูปแบบของรูปแบบ โปรดดูที่รูปแบบการตั้งค่าเนื้อหา
-
การตั้งค่า
ใดๆ
การตั้งค่าที่กฎนี้ใช้ โปรดดูคำอธิบายของออบเจ็กต์ ContentSetting แต่ละรายการสำหรับค่าที่เป็นไปได้
-
-
Callback
ไม่บังคับ
พารามิเตอร์
callback
มีลักษณะดังนี้() => void
-
returns
คำสัญญา<โมฆะ>
Chrome 96 ขึ้นไปPromise รองรับไฟล์ Manifest V3 ขึ้นไปเท่านั้น ส่วนแพลตฟอร์มอื่นๆ ต้องใช้ Callback
-
CookiesContentSetting
ค่าแจกแจง
"อนุญาต"
"บล็อก"
"session_only"
FullscreenContentSetting
ค่า
"อนุญาต"
ImagesContentSetting
ค่าแจกแจง
"อนุญาต"
"บล็อก"
JavascriptContentSetting
ค่าแจกแจง
"อนุญาต"
"บล็อก"
LocationContentSetting
ค่าแจกแจง
"อนุญาต"
"บล็อก"
"ask"
MicrophoneContentSetting
ค่าแจกแจง
"อนุญาต"
"บล็อก"
"ask"
MouselockContentSetting
ค่า
"อนุญาต"
MultipleAutomaticDownloadsContentSetting
ค่าแจกแจง
"อนุญาต"
"บล็อก"
"ask"
NotificationsContentSetting
ค่าแจกแจง
"อนุญาต"
"บล็อก"
"ask"
PluginsContentSetting
ค่า
"บล็อก"
PopupsContentSetting
ค่าแจกแจง
"อนุญาต"
"บล็อก"
PpapiBrokerContentSetting
ค่า
"บล็อก"
ResourceIdentifier
เนื้อหาประเภทเดียวที่ใช้ตัวระบุทรัพยากรคือ contentSettings.plugins
ดูข้อมูลเพิ่มเติมได้ที่ตัวระบุทรัพยากร
พร็อพเพอร์ตี้
-
คำอธิบาย
string ไม่บังคับ
คำอธิบายทรัพยากรที่มนุษย์อ่านได้
-
id
สตริง
ตัวระบุทรัพยากรสำหรับประเภทเนื้อหาที่ระบุ
Scope
ขอบเขตของ ContentSetting หนึ่งใน
regular
: การตั้งค่าสำหรับโปรไฟล์ปกติ (ซึ่งจะรับช่วงโดยโปรไฟล์ที่ไม่ระบุตัวตนหากไม่ได้ลบล้างที่อื่น)
incognito\_session\_only
: การตั้งค่าสำหรับโปรไฟล์ที่ไม่ระบุตัวตนซึ่งตั้งค่าได้ในระหว่างเซสชันไม่ระบุตัวตนเท่านั้น และจะถูกลบออกเมื่อเซสชันไม่ระบุตัวตนสิ้นสุดลง (ลบล้างการตั้งค่าปกติ)
ค่าแจกแจง
"regular"
"โหมดไม่ระบุตัวตน_session_only"
พร็อพเพอร์ตี้
automaticDownloads
จะอนุญาตให้เว็บไซต์ดาวน์โหลดไฟล์หลายไฟล์โดยอัตโนมัติหรือไม่ หนึ่งใน
allow
: อนุญาตให้เว็บไซต์ดาวน์โหลดไฟล์หลายไฟล์โดยอัตโนมัติ
block
: ไม่อนุญาตให้เว็บไซต์ดาวน์โหลดไฟล์หลายไฟล์โดยอัตโนมัติ
ask
: ถามเมื่อเว็บไซต์ต้องการดาวน์โหลดไฟล์โดยอัตโนมัติหลังจากไฟล์แรก
ค่าเริ่มต้นคือ ask
URL หลักคือ URL ของเฟรมระดับบนสุด ไม่ได้ใช้ URL รอง
ประเภท
autoVerify
ดูว่าจะอนุญาตให้เว็บไซต์ใช้ Private State Tokens API หรือไม่ หนึ่งใน
allow
: อนุญาตให้เว็บไซต์ใช้ Private State Tokens API
block
: บล็อกเว็บไซต์ไม่ให้ใช้ Private State Tokens API
ค่าเริ่มต้นคือ allow
URL หลักคือ URL ของเฟรมระดับบนสุด ไม่ได้ใช้ URL รอง หมายเหตุ: เมื่อเรียก set()
รูปแบบหลักต้องเป็น
ประเภท
camera
จะอนุญาตให้เว็บไซต์เข้าถึงกล้องไหม หนึ่งใน
allow
: อนุญาตให้เว็บไซต์เข้าถึงกล้อง
block
: ไม่อนุญาตให้เว็บไซต์เข้าถึงกล้อง
ask
: ถามเมื่อเว็บไซต์ต้องการเข้าถึงกล้อง
ค่าเริ่มต้นคือ ask
URL หลักคือ URL ของเอกสารที่ขอสิทธิ์เข้าถึงกล้อง ไม่ได้ใช้ URL รอง
หมายเหตุ: "อนุญาต" การตั้งค่าไม่ถูกต้องหากรูปแบบทั้งสองเป็น ''
ประเภท
clipboard
จะอนุญาตให้เว็บไซต์เข้าถึงคลิปบอร์ดผ่านความสามารถขั้นสูงของ Async Clipboard API หรือไม่ "ขั้นสูง" ความสามารถรวมถึงความสามารถใดๆ นอกเหนือจากการเขียนรูปแบบที่มีอยู่แล้วหลังจากท่าทางสัมผัสของผู้ใช้ เช่น ความสามารถในการอ่าน ความสามารถในการเขียนรูปแบบที่กำหนดเอง และความสามารถในการเขียนโดยไม่ต้องใช้ท่าทางสัมผัสของผู้ใช้ หนึ่งใน
allow
: อนุญาตให้เว็บไซต์ใช้ความสามารถของคลิปบอร์ดขั้นสูง
block
: ไม่อนุญาตให้เว็บไซต์ใช้ความสามารถของคลิปบอร์ดขั้นสูง
ask
: ถามเมื่อเว็บไซต์ต้องการใช้ความสามารถของคลิปบอร์ดขั้นสูง
ค่าเริ่มต้นคือ ask
URL หลักคือ URL ของเอกสารที่ขอสิทธิ์เข้าถึงคลิปบอร์ด ไม่ได้ใช้ URL รอง
ประเภท
cookies
จะอนุญาตให้เว็บไซต์ตั้งค่าคุกกี้และข้อมูลในเครื่องอื่นๆ หรือไม่ หนึ่งใน
allow
: ยอมรับคุกกี้
block
: บล็อกคุกกี้
session\_only
: ยอมรับคุกกี้สำหรับเซสชันปัจจุบันเท่านั้น
ค่าเริ่มต้นคือ allow
URL หลักคือ URL ที่แสดงถึงที่มาของคุกกี้ URL รองคือ URL ของเฟรมระดับบนสุด
ประเภท
fullscreen
เลิกใช้งานแล้ว ไม่มีผลใดๆ อีกต่อไป ตอนนี้ระบบจะให้สิทธิ์แบบเต็มหน้าจอโดยอัตโนมัติสำหรับทุกเว็บไซต์ ค่าจะเป็น allow
เสมอ
ประเภท
images
เลือกว่าจะแสดงรูปภาพหรือไม่ หนึ่งใน
allow
: แสดงรูปภาพ
block
: ไม่แสดงรูปภาพ
ค่าเริ่มต้นคือ allow
URL หลักคือ URL ของเฟรมระดับบนสุด URL รองคือ URL ของรูปภาพ
ประเภท
javascript
ระบุว่าจะเรียกใช้ JavaScript หรือไม่ หนึ่งใน
allow
: เรียกใช้ JavaScript
block
: ไม่เรียกใช้ JavaScript
ค่าเริ่มต้นคือ allow
URL หลักคือ URL ของเฟรมระดับบนสุด ไม่ได้ใช้ URL รอง
ประเภท
location
จะอนุญาตให้ใช้ตำแหน่งทางภูมิศาสตร์หรือไม่ หนึ่งใน
allow
: อนุญาตให้เว็บไซต์ติดตามตำแหน่งทางกายภาพของคุณ
block
: ไม่อนุญาตให้เว็บไซต์ติดตามตำแหน่งทางกายภาพของคุณ
ask
: ถามก่อนที่จะอนุญาตให้เว็บไซต์ติดตามตำแหน่งทางกายภาพของคุณ
ค่าเริ่มต้นคือ ask
URL หลักคือ URL ของเอกสารที่ขอข้อมูลตำแหน่ง URL รองคือ URL ของเฟรมระดับบนสุด (ซึ่งอาจต่างจาก URL ที่ส่งคำขอ)
ประเภท
microphone
ไม่ว่าจะอนุญาตให้เว็บไซต์เข้าถึงไมโครโฟนหรือไม่ หนึ่งใน
allow
: อนุญาตให้เว็บไซต์เข้าถึงไมโครโฟน
block
: ไม่อนุญาตให้เว็บไซต์เข้าถึงไมโครโฟน
ask
: ถามเมื่อเว็บไซต์ต้องการเข้าถึงไมโครโฟน
ค่าเริ่มต้นคือ ask
URL หลักคือ URL ของเอกสารที่ขอเข้าถึงไมโครโฟน ไม่ได้ใช้ URL รอง
หมายเหตุ: "อนุญาต" การตั้งค่าไม่ถูกต้องหากรูปแบบทั้งสองเป็น ''
ประเภท
mouselock
เลิกใช้งานแล้ว ไม่มีผลใดๆ อีกต่อไป ตอนนี้ระบบจะให้สิทธิ์การล็อกเมาส์กับเว็บไซต์ทั้งหมดโดยอัตโนมัติ ค่าจะเป็น allow
เสมอ
ประเภท
notifications
จะอนุญาตให้เว็บไซต์แสดงการแจ้งเตือนในเดสก์ท็อปหรือไม่ หนึ่งใน
allow
: อนุญาตให้เว็บไซต์แสดงการแจ้งเตือนในเดสก์ท็อป
block
: ไม่อนุญาตให้เว็บไซต์แสดงการแจ้งเตือนในเดสก์ท็อป
ask
: ถามเมื่อเว็บไซต์ต้องการแสดงการแจ้งเตือนบนเดสก์ท็อป
ค่าเริ่มต้นคือ ask
URL หลัก คือ URL ของเอกสารที่ต้องการแสดงการแจ้งเตือน ไม่ได้ใช้ URL รอง
ประเภท
plugins
เลิกใช้งานแล้ว เมื่อ Chrome 88 นำการรองรับ Flash ออกแล้ว สิทธิ์นี้จะไม่มีผลอีกต่อไป ค่าจะเป็น block
เสมอ ระบบจะไม่สนใจการเรียกใช้ไปยัง set()
และ clear()
ประเภท
popups
ไม่ว่าจะอนุญาตให้เว็บไซต์แสดงป๊อปอัปหรือไม่ หนึ่งใน
allow
: อนุญาตให้เว็บไซต์แสดงป๊อปอัป
block
: ไม่อนุญาตให้เว็บไซต์แสดงป๊อปอัป
ค่าเริ่มต้นคือ block
URL หลักคือ URL ของเฟรมระดับบนสุด ไม่ได้ใช้ URL รอง
ประเภท
unsandboxedPlugins
เลิกใช้งานแล้ว ก่อนหน้านี้ การควบคุมว่าจะให้เว็บไซต์เรียกใช้ปลั๊กอินโดยไม่ใช้แซนด์บ็อกซ์หรือไม่ แต่เมื่อนำกระบวนการโบรกเกอร์ Flash ออกจาก Chrome 88 สิทธิ์นี้จะไม่มีผลใดๆ อีกต่อไป ค่าจะเป็น block
เสมอ ระบบจะไม่สนใจการเรียกใช้ไปยัง set()
และ clear()