browser.contentSettings

คำอธิบาย

ใช้ chrome.contentSettings API เพื่อเปลี่ยนการตั้งค่าที่ควบคุมว่าเว็บไซต์จะใช้ฟีเจอร์ต่างๆ เช่น คุกกี้, JavaScript และปลั๊กอินได้หรือไม่ โดยทั่วไปแล้ว การตั้งค่าเนื้อหาช่วยให้คุณปรับแต่งลักษณะการทำงานของ Chrome ในแต่ละเว็บไซต์แทนที่จะเป็นแบบทั่วโลก

สิทธิ์

contentSettings

คุณต้องประกาศสิทธิ์ "contentSettings" ในไฟล์ Manifest ของส่วนขยายเพื่อใช้ API เช่น

{
  "name": "My extension",
  ...
  "permissions": [
    "contentSettings"
  ],
  ...
}

แนวคิดและการใช้งาน

รูปแบบการตั้งค่าเนื้อหา

คุณสามารถใช้รูปแบบเพื่อระบุเว็บไซต์ที่การตั้งค่าเนื้อหาแต่ละรายการมีผล เช่น https://*.youtube.com/* ระบุ youtube.com และโดเมนย่อยทั้งหมด ไวยากรณ์สำหรับรูปแบบการตั้งค่าเนื้อหาจะเหมือนกับรูปแบบการจับคู่ โดยมีความแตกต่างเล็กน้อยดังนี้

  • สำหรับ URL ของ http, https และ ftp เส้นทางต้องเป็นไวลด์การ์ด (/*) สำหรับ URL ของ file เส้นทางต้องระบุไว้อย่างสมบูรณ์และต้องไม่มีไวลด์การ์ด
  • รูปแบบการตั้งค่าเนื้อหาจะระบุหมายเลขพอร์ตได้ ซึ่งต่างจากรูปแบบการจับคู่ หากระบุหมายเลขพอร์ต รูปแบบจะจับคู่กับเว็บไซต์ที่มีพอร์ตนั้นเท่านั้น หากไม่ได้ระบุหมายเลขพอร์ต รูปแบบจะจับคู่กับพอร์ตทั้งหมด

ลำดับความสำคัญของรูปแบบ

เมื่อมีกฎการตั้งค่าเนื้อหามากกว่า 1 ข้อที่ใช้กับเว็บไซต์หนึ่งๆ กฎที่มีรูปแบบที่เจาะจงกว่าจะมีลำดับความสำคัญสูงกว่า

ตัวอย่างเช่น รูปแบบต่อไปนี้จะเรียงตามลำดับความสำคัญ

  1. https://www.example.com/*
  2. https://*.example.com/* (จับคู่ example.com และโดเมนย่อยทั้งหมด)
  3. <all_urls> (ตรงกับทุก URL)

ไวลด์การ์ด 3 ประเภทมีผลต่อความเฉพาะเจาะจงของรูปแบบ ดังนี้

  • ไวลด์การ์ดในพอร์ต (เช่น https://www.example.com:*/*)
  • ไวลด์การ์ดในรูปแบบ (เช่น *://www.example.com:123/*)
  • ไวลด์การ์ดในชื่อโฮสต์ (เช่น https://*.example.com:123/*)

หากรูปแบบหนึ่งมีความเฉพาะเจาะจงมากกว่าอีกรูปแบบหนึ่งในส่วนหนึ่ง แต่มีความเฉพาะเจาะจงน้อยกว่าในอีกส่วนหนึ่ง ระบบจะตรวจสอบส่วนที่แตกต่างกันตามลำดับต่อไปนี้ ชื่อโฮสต์ รูปแบบ พอร์ต ตัวอย่างเช่น รูปแบบต่อไปนี้จะเรียงตามลำดับความสำคัญ

  1. https://www.example.com:*/* ระบุชื่อโฮสต์และรูปแบบ
  2. *:/www.example.com:123/* ไม่สูงเท่า เนื่องจากแม้ว่าจะระบุชื่อโฮสต์ แต่ก็ไม่ได้ระบุรูปแบบ
  3. https://*.example.com:123/* ต่ำกว่า เนื่องจากแม้ว่าจะระบุพอร์ตและรูปแบบ แต่ก็มีไวลด์การ์ดในชื่อโฮสต์

รูปแบบหลักและรอง

URL ที่นำมาพิจารณาเมื่อตัดสินใจว่าจะใช้การตั้งค่าเนื้อหาใดจะขึ้นอยู่กับประเภทเนื้อหา ตัวอย่างเช่น การตั้งค่าสำหรับ contentSettings.notifications จะอิงตาม URL ที่แสดงในแถบอเนกประสงค์ เราเรียก URL นี้ว่า URL "หลัก"

เนื้อหาบางประเภทอาจพิจารณา URL เพิ่มเติม ตัวอย่างเช่น การอนุญาตให้เว็บไซต์ตั้งค่า contentSettings.cookies จะพิจารณาจาก URL ของคำขอ HTTP (ซึ่งเป็น URL หลักในกรณีนี้) รวมถึง URL ที่แสดงในแถบอเนกประสงค์ (ซึ่งเรียกว่า URL "รอง")

หากกฎหลายข้อมีรูปแบบหลักและรอง กฎที่มีรูปแบบหลักที่เจาะจงกว่าจะมีลำดับความสำคัญสูงกว่า หากมีกฎหลายข้อที่มีรูปแบบหลักเหมือนกัน กฎที่มีรูปแบบรองที่เจาะจงกว่าจะมีลำดับความสำคัญสูงกว่า ตัวอย่างเช่น รายการคู่รูปแบบหลัก/รองต่อไปนี้จะเรียงตามลำดับความสำคัญ

ลำดับความสำคัญรูปแบบหลักรูปแบบรอง
1https://www.moose.com/*https://www.wombat.com/*
2https://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

Chrome 113 ขึ้นไป browser.* ตั้งแต่ Chrome 148

ค่าแจกแจง

"allow"

"block"

CameraContentSetting

Chrome 46 ขึ้นไป browser.* ตั้งแต่ Chrome 148

ค่าแจกแจง

"allow"

"block"

"ask"

ClipboardContentSetting

Chrome 121 ขึ้นไป browser.* ตั้งแต่ Chrome 148

ค่าแจกแจง

"allow"

"block"

"ask"

ContentSetting

พร็อพเพอร์ตี้

  • ล้าง

    void

    ล้างกฎการตั้งค่าเนื้อหาทั้งหมดที่ตั้งค่าโดยส่วนขยายนี้

    ฟังก์ชัน clear จะมีลักษณะดังนี้

    (details: object) => {...}

    • รายละเอียด

      ออบเจ็กต์

      • ขอบเขต

        ขอบเขต ไม่บังคับ

        ตำแหน่งที่จะล้างการตั้งค่า (ค่าเริ่มต้น: ปกติ)

    • returns

      Promise<void>

      Chrome 96 ขึ้นไป browser.* ตั้งแต่ Chrome 148
  • รับ

    void

    รับการตั้งค่าเนื้อหาปัจจุบันสำหรับคู่ URL ที่ระบุ

    ฟังก์ชัน get จะมีลักษณะดังนี้

    (details: object) => {...}

    • รายละเอียด

      ออบเจ็กต์

      • ไม่ระบุตัวตน

        บูลีน ไม่บังคับ

        ระบุว่าจะตรวจสอบการตั้งค่าเนื้อหาสำหรับเซสชันไม่ระบุตัวตนหรือไม่ (ค่าเริ่มต้นคือ false)

      • primaryUrl

        สตริง

        URL หลักที่ควรดึงข้อมูลการตั้งค่าเนื้อหา โปรดทราบว่าความหมายของ URL หลักจะขึ้นอยู่กับประเภทเนื้อหา

      • resourceIdentifier

        ResourceIdentifier ไม่บังคับ

        ตัวระบุที่เจาะจงมากขึ้นของประเภทเนื้อหาที่ควรดึงข้อมูลการตั้งค่า

      • secondaryUrl

        สตริง ไม่บังคับ

        URL รองที่ควรดึงข้อมูลการตั้งค่าเนื้อหา ค่าเริ่มต้นคือ URL หลัก โปรดทราบว่าความหมายของ URL รองจะขึ้นอยู่กับประเภทเนื้อหา และเนื้อหาบางประเภทไม่ได้ใช้ URL รอง

    • returns

      Promise<object>

      Chrome 96 ขึ้นไป browser.* ตั้งแต่ Chrome 148
  • getResourceIdentifiers

    void

    ฟังก์ชัน getResourceIdentifiers จะมีลักษณะดังนี้

    () => {...}

    • returns
      Chrome 96 ขึ้นไป browser.* ตั้งแต่ Chrome 148
  • ตั้งค่า

    void

    ใช้กฎการตั้งค่าเนื้อหาใหม่

    ฟังก์ชัน set จะมีลักษณะดังนี้

    (details: object) => {...}

    • รายละเอียด

      ออบเจ็กต์

      • primaryPattern

        สตริง

        รูปแบบของ URL หลัก โปรดดูรายละเอียดเกี่ยวกับรูปแบบของแพทเทิร์นที่หัวข้อแพทเทิร์นการตั้งค่าเนื้อหา

      • resourceIdentifier

        ResourceIdentifier ไม่บังคับ

        ตัวระบุทรัพยากรสำหรับประเภทเนื้อหา

      • ขอบเขต

        ขอบเขต ไม่บังคับ

        ตำแหน่งที่จะตั้งค่า (ค่าเริ่มต้น: ปกติ)

      • secondaryPattern

        สตริง ไม่บังคับ

        รูปแบบของ URL รอง ค่าเริ่มต้นคือการจับคู่ URL ทั้งหมด โปรดดูรายละเอียดเกี่ยวกับรูปแบบของแพทเทิร์นที่หัวข้อแพทเทิร์นการตั้งค่าเนื้อหา

      • การตั้งค่า

        ใดๆ

        การตั้งค่าที่ใช้โดยกฎนี้ ดูคำอธิบายของออบเจ็กต์ ContentSetting แต่ละรายการสำหรับค่าที่เป็นไปได้

    • returns

      Promise<void>

      Chrome 96 ขึ้นไป browser.* ตั้งแต่ Chrome 148

CookiesContentSetting

Chrome 44 ขึ้นไป browser.* ตั้งแต่ Chrome 148

ค่าแจกแจง

"allow"

"block"

"session_only"

FullscreenContentSetting

Chrome 44 ขึ้นไป browser.* ตั้งแต่ Chrome 148

ค่า

"allow"

ImagesContentSetting

Chrome 44 ขึ้นไป browser.* ตั้งแต่ Chrome 148

ค่าแจกแจง

"allow"

"block"

JavascriptContentSetting

Chrome 44 ขึ้นไป browser.* ตั้งแต่ Chrome 148

ค่าแจกแจง

"allow"

"block"

LocationContentSetting

Chrome 44 ขึ้นไป browser.* ตั้งแต่ Chrome 148

ค่าแจกแจง

"allow"

"block"

"ask"

MicrophoneContentSetting

Chrome 46 ขึ้นไป browser.* ตั้งแต่ Chrome 148

ค่าแจกแจง

"allow"

"block"

"ask"

MouselockContentSetting

Chrome 44 ขึ้นไป browser.* ตั้งแต่ Chrome 148

ค่า

"allow"

MultipleAutomaticDownloadsContentSetting

Chrome 44 ขึ้นไป browser.* ตั้งแต่ Chrome 148

ค่าแจกแจง

"allow"

"block"

"ask"

NotificationsContentSetting

Chrome 44 ขึ้นไป browser.* ตั้งแต่ Chrome 148

ค่าแจกแจง

"allow"

"block"

"ask"

PluginsContentSetting

Chrome 44 ขึ้นไป browser.* ตั้งแต่ Chrome 148

ค่า

"block"

PopupsContentSetting

Chrome 44 ขึ้นไป browser.* ตั้งแต่ Chrome 148

ค่าแจกแจง

"allow"

"block"

PpapiBrokerContentSetting

Chrome 44 ขึ้นไป browser.* ตั้งแต่ Chrome 148

ค่า

"block"

ResourceIdentifier

ประเภทเนื้อหาเดียวที่ใช้ตัวระบุทรัพยากรคือ contentSettings.plugins ดูข้อมูลเพิ่มเติมได้ที่ตัวระบุทรัพยากร

พร็อพเพอร์ตี้

  • คำอธิบาย

    สตริง ไม่บังคับ

    คำอธิบายทรัพยากรที่มนุษย์อ่านได้

  • id

    สตริง

    ตัวระบุทรัพยากรสำหรับประเภทเนื้อหาที่ระบุ

Scope

Chrome 44 ขึ้นไป browser.* ตั้งแต่ Chrome 148

ขอบเขตของ ContentSetting ค่าใดค่าหนึ่งต่อไปนี้ regular: การตั้งค่าสำหรับโปรไฟล์ปกติ (ซึ่งโปรไฟล์ที่ไม่ระบุตัวตนจะรับค่ามาหากไม่มีการลบล้างที่อื่น) incognito\_session\_only: การตั้งค่าสำหรับโปรไฟล์ที่ไม่ระบุตัวตนซึ่งตั้งค่าได้เฉพาะในระหว่างเซสชันไม่ระบุตัวตน และจะถูกลบเมื่อเซสชันไม่ระบุตัวตนสิ้นสุดลง (ลบล้างการตั้งค่าปกติ)

ค่าแจกแจง

"regular"

"incognito_session_only"

SoundContentSetting

Chrome 141 ขึ้นไป browser.* ตั้งแต่ Chrome 148

ค่าแจกแจง

"allow"

"block"

พร็อพเพอร์ตี้

automaticDownloads

อนุญาตให้เว็บไซต์ดาวน์โหลดไฟล์หลายไฟล์โดยอัตโนมัติหรือไม่ ค่าใดค่าหนึ่งต่อไปนี้ allow: อนุญาตให้เว็บไซต์ดาวน์โหลดหลายไฟล์โดยอัตโนมัติ block: ไม่อนุญาตให้เว็บไซต์ดาวน์โหลดหลายไฟล์โดยอัตโนมัติ ask: ถามเมื่อเว็บไซต์ต้องการดาวน์โหลดไฟล์โดยอัตโนมัติหลังจากไฟล์แรก ค่าเริ่มต้นคือ ask URL หลักคือ URL ของเฟรมระดับบนสุด ระบบจะไม่ใช้ URL สำรอง

autoVerify

Chrome 113 ขึ้นไป browser.* ตั้งแต่ Chrome 148

อนุญาตให้เว็บไซต์ใช้ Private State Tokens API หรือไม่ ค่าใดค่าหนึ่งต่อไปนี้ allow: อนุญาตให้เว็บไซต์ใช้ Private State Tokens API block: บล็อกเว็บไซต์ไม่ให้ใช้ Private State Tokens API ค่าเริ่มต้นคือ allow เมื่อเรียกใช้ set() รูปแบบ URL หลักต้องเป็น <all_urls> ระบบจะไม่ใช้ URL สำรอง

camera

Chrome 46 ขึ้นไป browser.* ตั้งแต่ Chrome 148

อนุญาตให้เว็บไซต์เข้าถึงกล้องหรือไม่ ค่าใดค่าหนึ่งต่อไปนี้ allow: อนุญาตให้เว็บไซต์เข้าถึงกล้อง block: ไม่อนุญาตให้เว็บไซต์เข้าถึงกล้อง ask: ถามเมื่อเว็บไซต์ต้องการเข้าถึงกล้อง ค่าเริ่มต้นคือ ask URL หลักคือ URL ของเอกสารที่ขอสิทธิ์เข้าถึงกล้อง ระบบจะไม่ใช้ URL สำรอง หมายเหตุ: การตั้งค่า "อนุญาต" จะใช้ไม่ได้หากทั้ง 2 รูปแบบเป็น "<all_urls>"

ประเภท

clipboard

Chrome 121 ขึ้นไป browser.* ตั้งแต่ Chrome 148

อนุญาตให้เว็บไซต์เข้าถึงคลิปบอร์ดผ่านความสามารถขั้นสูงของ 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

Chrome 46 ขึ้นไป browser.* ตั้งแต่ Chrome 148

อนุญาตให้เว็บไซต์เข้าถึงไมโครโฟนหรือไม่ ค่าใดค่าหนึ่งต่อไปนี้ allow: อนุญาตให้เว็บไซต์เข้าถึงไมโครโฟน block: ไม่อนุญาตให้เว็บไซต์เข้าถึงไมโครโฟน ask: ถามเมื่อเว็บไซต์ต้องการเข้าถึงไมโครโฟน ค่าเริ่มต้นคือ ask URL หลักคือ URL ของเอกสารที่ขอสิทธิ์เข้าถึงไมโครโฟน ระบบจะไม่ใช้ URL สำรอง หมายเหตุ: การตั้งค่า "อนุญาต" จะใช้ไม่ได้หากทั้ง 2 รูปแบบเป็น "<all_urls>"

mouselock

เลิกใช้งานแล้ว ไม่มีผลอีกต่อไป ตอนนี้ระบบจะให้สิทธิ์การล็อกเมาส์สำหรับทุกเว็บไซต์โดยอัตโนมัติ ค่าจะเป็น allow เสมอ

notifications

อนุญาตให้เว็บไซต์แสดงการแจ้งเตือนในเดสก์ท็อปหรือไม่ ค่าใดค่าหนึ่งต่อไปนี้ allow: อนุญาตให้เว็บไซต์แสดงการแจ้งเตือนในเดสก์ท็อป block: ไม่อนุญาตให้เว็บไซต์แสดงการแจ้งเตือนในเดสก์ท็อป ask: ถามเมื่อเว็บไซต์ต้องการแสดงการแจ้งเตือนในเดสก์ท็อป ค่าเริ่มต้นคือ ask URL หลักคือ URL ของเอกสารที่ต้องการแสดงการแจ้งเตือน ระบบจะไม่ใช้ URL สำรอง

plugins

เลิกใช้งานแล้ว เมื่อนำการรองรับ Flash ออกใน Chrome 88 สิทธิ์นี้จะไม่มีผลอีกต่อไป ค่าจะเป็น block เสมอ ระบบจะไม่สนใจการเรียกใช้ set() และ clear()

popups

อนุญาตให้เว็บไซต์แสดงป๊อปอัปหรือไม่ ค่าใดค่าหนึ่งต่อไปนี้ allow: อนุญาตให้เว็บไซต์แสดงป๊อปอัป block: ไม่อนุญาตให้เว็บไซต์แสดงป๊อปอัป ค่าเริ่มต้นคือ block URL หลักคือ URL ของเฟรมระดับบนสุด ระบบจะไม่ใช้ URL สำรอง

ประเภท

unsandboxedPlugins

เลิกใช้งานแล้ว ก่อนหน้านี้ นโยบายนี้ควบคุมว่าจะอนุญาตให้เว็บไซต์เรียกใช้ปลั๊กอินที่ไม่ได้อยู่ในแซนด์บ็อกซ์หรือไม่ แต่เมื่อนำกระบวนการ Flash Broker ออกใน Chrome 88 สิทธิ์นี้จึงไม่มีผลอีกต่อไป ค่าจะเป็น block เสมอ ระบบจะไม่สนใจการเรียกใช้ set() และ clear()