Chrome 117 เบต้า

การรองรับ Subgrid ของ CSS Grid, ภาพเคลื่อนไหวเข้าและออกสำหรับ CSS, การจัดกลุ่มอาร์เรย์, ตัวช่วย Iterator และอื่นๆ

การเปลี่ยนแปลงที่อธิบายไว้จะมีผลกับเวอร์ชันเบต้าล่าสุดของ Chrome สำหรับ Android, ChromeOS, Linux, macOS และ Windows เว้นแต่จะระบุไว้เป็นอย่างอื่น ดูข้อมูลเพิ่มเติมเกี่ยวกับฟีเจอร์ที่ระบุไว้ที่นี่ผ่านลิงก์ที่ให้ไว้หรือจากรายการใน ChromeStatus.com โดย Chrome 117 เป็นเวอร์ชันเบต้า ณ วันที่ 16 สิงหาคม 2023 คุณดาวน์โหลดเวอร์ชันล่าสุดได้ที่ Google.com สำหรับเดสก์ท็อปหรือใน Google Play Store บน Android

CSS

รุ่นนี้เพิ่มฟีเจอร์ CSS ใหม่ 6 รายการ พร็อพเพอร์ตี้ 3 รายการแรกเป็นส่วนหนึ่งของงานเพื่อเปิดใช้การเปลี่ยนผ่านในพร็อพเพอร์ตี้แบบไม่ต่อเนื่อง ซึ่งจะเปิดใช้ภาพเคลื่อนไหวสำหรับการเข้าและออกฉาก

กฎ @starting-style

กฎ @ นี้ช่วยให้ผู้เขียนเริ่มการเปลี่ยน CSS ในการอัปเดตสไตล์ครั้งแรกได้

การเปลี่ยน CSS จะไม่ทริกเกอร์การเปลี่ยนจากสไตล์เริ่มต้นในการอัปเดตสไตล์ครั้งแรกสำหรับองค์ประกอบ หรือเมื่อประเภทการแสดงผลเปลี่ยนจาก none เป็นประเภทอื่น ทั้งนี้เพื่อหลีกเลี่ยงการเปลี่ยนรูปแบบเริ่มต้นโดยไม่คาดคิด หากต้องการเริ่มการเปลี่ยนผ่านจากการอัปเดตรูปแบบครั้งแรก ตอนนี้คุณสามารถใช้รูปแบบจากภายในกฎ @starting-style ได้แล้ว ตัวอย่างเช่น CSS ต่อไปนี้จะเริ่มการเปลี่ยนสีพื้นหลังจากสีเขียวเป็นสีเขียวมะนาวในการอัปเดตสไตล์ครั้งแรกสำหรับ div

div { 
  transition: background-color 0.5s; 
  background-color: lime; 
} 

@starting-style {
  div { 
    background-color: green; 
  } 
}

พร็อพเพอร์ตี้การวางซ้อน

พร็อพเพอร์ตี้ overlay ช่วยให้นักพัฒนาซอฟต์แวร์เก็บองค์ประกอบไว้ในเลเยอร์บนสุดเพื่อเปลี่ยนผ่านเมื่อออกได้ ระบบจะเพิ่มพร็อพเพอร์ตี้การวางซ้อนเพื่อระบุว่าองค์ประกอบอยู่ในเลเยอร์บนสุดหรือไม่ และสามารถใช้ค่าได้ 2 ค่า ได้แก่ none หรือ auto

พร็อพเพอร์ตี้ transition-behavior ของ CSS

พร็อพเพอร์ตี้ CSS transition-behavior เป็นรูปแบบเต็มของพร็อพเพอร์ตี้ transition ซึ่งช่วยให้ใช้พร็อพเพอร์ตี้แบบไม่ต่อเนื่องในการเปลี่ยนผ่านได้ เมื่อระบุค่า allow-discrete สำหรับ transition-behavior พร็อพเพอร์ตี้แบบไม่ต่อเนื่องจะเริ่มภาพเคลื่อนไหวและเปลี่ยนจากค่าเริ่มต้นเป็นค่าสุดท้ายที่ 50% สําหรับการเปลี่ยนที่ display: none และ content-visibility: hidden เป็นค่าเริ่มต้นหรือค่าสุดท้าย ระบบจะใช้ค่าที่มองเห็นได้ตลอดระยะเวลาของการเปลี่ยน

ค่า Subgrid ของ CSS Grid

ตอนนี้ค่า subgrid สำหรับ grid-template-columns และ grid-template-rows มีผลใน Chrome แล้ว ค่านี้ช่วยให้ตารางกริดที่ฝังสามารถใช้แทร็กที่กำหนดไว้ในระดับบนสุด แทนที่จะสร้างคำจำกัดความแทร็กใหม่สำหรับแถว คอลัมน์ หรือทั้ง 2 อย่าง

CSS text-wrap: pretty

ค่า pretty สำหรับพร็อพเพอร์ตี้ CSS text-wrap จะเพิ่มประสิทธิภาพเพื่อให้ได้เลย์เอาต์ที่ดีที่สุด ไม่ใช่ความเร็ว โดยมีไว้สำหรับข้อความเนื้อหา จึงคาดว่าจะมีหลายบรรทัด การใช้ pretty หมายความว่านักพัฒนาแอปเลือกใช้เมธอดเลย์เอาต์ที่อาจช้ากว่า wrap ซึ่งเพิ่มประสิทธิภาพอย่างชัดเจน การใช้งานปัจจุบันใน Chrome จะเพิ่มประสิทธิภาพสำหรับคำที่ขึ้นบรรทัดใหม่เพื่อป้องกันไม่ให้คำเดียวแสดงที่ด้านล่างของย่อหน้าข้อความ

ใน Chrome 117 ให้ลองใช้การสาธิต text-wrap: pretty นี้ แล้วดูว่าค่าดังกล่าวเปลี่ยนการนำเสนอข้อความอย่างไร

contain-intrinsic-size: รองรับ auto none

ฟีเจอร์นี้จะขยายไวยากรณ์ contain-intrinsic-size ที่มีอยู่ให้รวม auto && none ด้วย

Web API

การจัดกลุ่มอาร์เรย์

การจัดกลุ่มอาร์เรย์เป็นการดำเนินการที่พบบ่อยมาก ตัวอย่างที่ดีที่สุดคือส่วนคำสั่ง GROUP BY ของ SQL และการเขียนโปรแกรม MapReduce (ซึ่งควรคิดว่าเป็น map-group-reduce) ความสามารถในการรวมข้อมูลเป็นกลุ่มช่วยให้นักพัฒนาแอปคำนวณชุดข้อมูลลำดับที่สูงขึ้นได้ เช่น อายุเฉลี่ยของกลุ่มประชากรตามรุ่นหรือค่า LCP รายวันสำหรับหน้าเว็บ ฟีเจอร์นี้ช่วยให้ทำเช่นนี้ได้โดยการเพิ่มเมธอดแบบคงที่ Object.groupBy และ Map.groupBy เมธอด Object จะแสดงผลออบเจ็กต์ธรรมดา โดยที่กลุ่มเป็นคีย์พร็อพเพอร์ตี้ เมธอด Map จะแสดงผล Map ซึ่งคีย์อาจเป็นค่าที่กำหนดเอง

ล้างคำแนะนำสำหรับไคลเอ็นต์ผ่านส่วนหัว Clear-Site-Data

ตอนนี้เว็บไซต์จะล้างแคชคำแนะนำสำหรับไคลเอ็นต์ได้โดยใช้ Clear-Site-Data: "clientHints" นอกจากนี้ ระบบจะล้างคำแนะนำสำหรับไคลเอ็นต์เมื่อ "คุกกี้" "แคช" หรือ "*" ได้รับการกำหนดเป้าหมายโดยส่วนหัวเดียวกัน เนื่องจากหากผู้ใช้ล้างคุกกี้ใน UI ระบบจะล้างคำแนะนำสำหรับไคลเอ็นต์ด้วย แคชคำแนะนำสำหรับไคลเอ็นต์เป็นแคช และเพื่อให้สอดคล้องกับเป้าหมายไวลด์การ์ดตามลำดับ

ไวยากรณ์ไวลด์การ์ดส่วนหัว Clear-Site-Data

ตอนนี้เว็บไซต์จะล้างเป้าหมายพื้นที่เก็บข้อมูลทั้งหมด ("คุกกี้" "แคช" และ "พื้นที่เก็บข้อมูล") ได้โดยส่ง Clear-Site-Data: "*" โปรดทราบว่าขณะนี้ Chrome ไม่รองรับการล้าง "executionContexts" แต่หากเราเพิ่มการรองรับในอนาคต ส่วนหัวที่กำหนดเป้าหมายเป็น "*" ก็จะล้างข้อมูลดังกล่าวด้วย

customElements.getName

เมธอด customElements.getName() จะแสดงชื่อแท็กของคำจำกัดความองค์ประกอบที่กำหนดเองที่ระบุ

ตัวช่วย Iterator

ตัวช่วย Iterator เป็นเมธอดใหม่ในต้นแบบ Iterator เพื่อให้สามารถใช้งานและใช้ Iterator ทั่วไปได้

ทำให้ CaptureController มาจากอินเทอร์เฟซ EventTarget

อินเทอร์เฟซ CaptureController ช่วยให้จัดการเซสชันการจับภาพหน้าจอเพิ่มเติมได้ ในอนาคต คาดว่าเหตุการณ์ที่เกี่ยวข้องกับเซสชันการจับภาพจะถูกส่งไปยังตัวควบคุมนั้น เพื่อให้สามารถจัดการ Listener สำหรับเหตุการณ์ดังกล่าวได้ เมธอด EventTarget จึงพร้อมใช้งานใน CaptureController

PerformanceResourceTiming deliveryType

พร็อพเพอร์ตี้ deliveryType ของ PerformanceResourceTiming จะแสดงข้อมูลเกี่ยวกับวิธีส่งทรัพยากร เช่น ทรัพยากรที่ส่งจากแคช (ปัจจุบันแสดงผ่าน transferSize) และการไปยังส่วนต่างๆ ที่ดึงข้อมูลล่วงหน้าโดยหน้าก่อนหน้า

การตรวจสอบพอร์ตโอเวอร์โฟลว์ในตัวตั้งค่า URL

ระบบจะตรวจสอบค่าพอร์ตเมื่อตั้งค่า url.port ค่าทั้งหมดที่เกินขีดจำกัดตัวเลข 16 บิตจะใช้ไม่ได้อีกต่อไป ตัวอย่างเช่น สคริปต์ต่อไปนี้จะทำงานแตกต่างออกไปหลังจากการเปลี่ยนแปลง

u = new URL("http://test.com"); 
u.port = 65536; 
console.log(u.port); 

ก่อนการเปลี่ยนแปลง เอาต์พุตคือ 65536 หลังจากการเปลี่ยนแปลง เอาต์พุตจะเป็น 80

Private State Token API

นี่คือ API ใหม่สําหรับการเผยแพร่สัญญาณส่วนตัวแบบจํากัดในเว็บไซต์ต่างๆ โดยไม่ต้องใช้ตัวระบุแบบถาวรข้ามเว็บไซต์ เช่น คุกกี้ของบุคคลที่สาม วิธีการป้องกันการฉ้อโกงที่ใช้คุกกี้ของบุคคลที่สามจะใช้ไม่ได้เมื่อเลิกใช้งานคุกกี้ของบุคคลที่สาม Private State Token API ไม่ได้สร้างหรือกำหนดสัญญาณป้องกันการฉ้อโกง ซึ่งขึ้นอยู่กับบุคคลที่หนึ่งที่เกี่ยวข้องและผู้ออกโทเค็น แต่ API จะรักษาความเป็นส่วนตัวโดยบังคับใช้ขีดจำกัดของข้อมูลที่โอนในสัญญาณเหล่านี้ API นี้อิงตามตัวแปรของโปรโตคอล Privacy Pass ซึ่งอยู่ระหว่างการกำหนดมาตรฐานโดย IETF ซึ่งถือได้ว่าเป็นรูปแบบโปรโตคอล Privacy Pass ที่แสดงบนเว็บ ข้อกำหนดของ API จะได้รับการอัปเดตสำหรับโทเค็นเวอร์ชันและประเภทใหม่ๆ และจะได้รับการอัปเดตให้สอดคล้องกับข้อกำหนดของคณะทำงาน Privacy Pass การเปลี่ยนแปลงที่คาดว่าจะเกิดขึ้นจะอยู่ในโปรโตคอลการเข้ารหัสและโค้ดการออกโทเค็นที่เกี่ยวข้อง โดยเราคาดว่าจะไม่มีการเปลี่ยนแปลงใน Fetch API สำหรับการออกและการแลกสิทธิ์ที่นักพัฒนาแอปเห็น Private State Token API เดิมเรียกว่า Trust Token API เราได้เปลี่ยนชื่อเพื่อให้สื่อความหมายที่แท้จริงได้แม่นยำยิ่งขึ้น และเพื่อเน้นประโยชน์ด้านความเป็นส่วนตัวที่ผู้ใช้จะได้รับ

โปรแกรมแยกวิเคราะห์โฮสต์ IPv6 ที่ฝัง IPv4 ซึ่งเข้ากันได้กับมาตรฐาน URL

ลักษณะการทำงานของโปรแกรมแยกวิเคราะห์โฮสต์ IPv6 ที่ฝัง IPv4 จะได้รับการอัปเดตให้เป็นไปตามมาตรฐาน URL ของเว็บอย่างเคร่งครัด ข้อจำกัดที่ใช้กับที่อยู่ IPv6 มีดังนี้

  • ที่อยู่ IPv4 ที่ฝังจะต้องประกอบด้วย 4 ส่วนเสมอ
  • ที่อยู่ที่มีน้อยกว่า 4 ส่วน เช่น http://[::1.2] จะใช้ไม่ได้อีกต่อไป ฟีเจอร์นี้เป็นส่วนหนึ่งของ URL Interop 2023

URL: อนุญาตให้ "%00" เป็นเส้นทาง URL ที่ถูกต้อง

ปัจจุบัน Chrome จะถือว่า URL ไม่ถูกต้องหากส่วนเส้นทางของ URL มี "%00" (หรือค่า Null) ซึ่งไม่เป็นไปตามมาตรฐาน URL ตัวอย่างเช่น การทดสอบต่อไปนี้ไม่สำเร็จใน Chrome เนื่องจาก new URL(...) แสดงข้อยกเว้น URL ที่ไม่ถูกต้อง

assertEquals(new URL("http://example.com/%00").pathname, "/%00"); 

ตามมาตรฐาน URL อักขระหรือลำดับไบต์ใดๆ ในเส้นทาง URL ไม่ควรทำให้ URL ไม่ถูกต้อง และการเปลี่ยนแปลงนี้จะอัปเดต Chrome ให้เป็นไปตามมาตรฐานดังกล่าว

การควบคุมส่วนขยายส่วนหัว RTP ของ WebRTC

ขยาย RTCRtpTransceiver API ของ WebRTC เพื่อให้ควบคุมได้ว่าจะเจรจาส่วนขยายส่วนหัว RTP ใด

เครื่องมือวัดปริมาณต่อเฟรมใน VideoEncoder

เพิ่ม "quantizer" VideoEncoderBitrateMode สำหรับ VideoEncoder ซึ่งช่วยให้ระบุพารามิเตอร์ Quantizer สำหรับแต่ละเฟรมของตัวแปลงรหัสวิดีโอ AV1, VP9 และ AVC ได้

ตัวเลือก WebUSB exclusionFilters ใน requestDevice()

ตัวเลือก exclusionFilters ใน navigator.usb.requestDevice() ช่วยให้นักพัฒนาเว็บยกเว้นอุปกรณ์บางอย่างจากเครื่องมือเลือกเบราว์เซอร์ได้ ซึ่งใช้เพื่อยกเว้นอุปกรณ์ที่ตรงกับตัวกรองที่กว้างกว่าแต่ไม่รองรับได้

ช่วงทดลองใช้จากต้นทางที่อยู่ระหว่างดำเนินการ

ใน Chrome 117 คุณสามารถเลือกใช้ช่วงทดลองใช้จากต้นทางใหม่ต่อไปนี้ได้

การรับส่งข้อมูลพจนานุกรมการบีบอัดด้วย Brotli ที่แชร์

ฟีเจอร์นี้เพิ่มการรองรับการใช้การตอบกลับก่อนหน้าที่กำหนดเป็นพจนานุกรมภายนอกสำหรับการตอบกลับ HTTP ที่บีบอัดด้วย Brotli

ลงทะเบียนสำหรับช่วงทดลองใช้ CompressionDictionaryTransport จากต้นทาง

ช่วงทดลองใช้ฟีเจอร์ที่เลิกใช้งาน WebSQL

เรากำลังนำ WebSQL ออกจาก Chrome เราขอแนะนำให้เว็บไซต์ที่ใช้ Web SQL เปลี่ยนไปใช้ SQLite ผ่าน Wasm

ช่วงทดลองใช้ฟีเจอร์ที่เลิกใช้งานนี้ช่วยให้นักพัฒนาซอฟต์แวร์ที่ต้องการเวลาเพิ่มเติมในการย้ายข้อมูลสามารถใช้ WebSQL ต่อไปได้จนถึง Chrome 123 (มีนาคม 2024) ลงทะเบียนช่วงทดลองใช้ฟีเจอร์ที่เลิกใช้งาน WebSQL

เว็บแอปแบบแท็บ

อนุญาตให้หน้าต่างเว็บแอปมีแนวแท็บ เช่น เพื่อแก้ไขเอกสารหลายรายการในแอปเดียวกัน ซึ่งจะเพิ่มโหมดการแสดงผล "แบบแท็บ" ใหม่และช่องไฟล์ Manifest ใหม่เพื่ออนุญาตให้ปรับแต่งแนวแท็บได้

ลงทะเบียนสำหรับช่วงทดลองใช้จากต้นทางของเว็บแอปแบบมีแท็บ

การเลิกใช้งานและการนำออก

Chrome เวอร์ชันนี้จะเลิกใช้งานและนำรายการที่แสดงด้านล่างออก ไปที่ ChromeStatus.com เพื่อดูรายการการเลิกใช้งานที่วางแผนไว้ การเลิกใช้งานในปัจจุบัน และการนำออกก่อนหน้านี้

Chrome เวอร์ชันนี้เลิกใช้งาน 2 ฟีเจอร์

เลิกใช้งานเหตุการณ์ unload

Chrome 117 จะเริ่มกระบวนการเลิกใช้งานตัวแฮนเดิลเหตุการณ์ unload หากเว็บไซต์ของคุณใช้สิ่งเหล่านี้ เราขอแนะนำอย่างยิ่งให้อ่านโพสต์เฉพาะเกี่ยวกับการเลิกใช้งาน unload เพื่อดูรายละเอียดเพิ่มเติม

เลิกใช้งานลายเซ็นเซิร์ฟเวอร์ TLS SHA-1

Chrome กำลังจะหยุดรองรับอัลกอริทึมลายเซ็นที่ใช้ SHA-1 สำหรับลายเซ็นเซิร์ฟเวอร์ในระหว่างแฮนด์เชค TLS การดำเนินการนี้จะไม่ส่งผลต่อการรองรับ SHA-1 ในใบรับรองเซิร์ฟเวอร์ซึ่งถูกนำออกไปแล้ว หรือในใบรับรองไคลเอ็นต์ซึ่งยังคงรองรับอยู่

Chrome เวอร์ชันนี้จะนำฟีเจอร์ออก 4 รายการ

[WebRTC] ยกเลิกการจัดส่ง getStats() เดิมที่อิงตาม Callback

RTCPeerConnection มี getStats() 2 เวอร์ชัน โดยเวอร์ชันหนึ่งเป็นไปตามข้อกำหนดซึ่งจะแสดงผลรายงานผ่านการแก้ไข Promise และอีกเวอร์ชันหนึ่งเป็นแบบไม่เป็นมาตรฐานซึ่งจะแสดงผลรายงานที่แตกต่างกันมากผ่าน Callback เป็นอาร์กิวเมนต์แรก ตอนนี้เราได้นำ getStats() ที่อิงตาม Callback ออกแล้ว

ดูข้อมูลเพิ่มเติมเกี่ยวกับการย้ายข้อมูลและสิ่งที่ต้องทำหากต้องการเวลาเพิ่มเติมได้ที่คำแนะนำในการย้ายข้อมูล getStats() เดิม

การนำค่า -1 สำหรับ datachannelIdentifier ของ getStats ใน WebRTC ออก

getStats API ของ WebRTC จะแสดงพร็อพเพอร์ตี้ dataChannelIdentifier โดยจะไม่แสดงค่า "-1" อีกต่อไปในกรณีที่มีการค้นหาสถิติก่อนที่จะสร้างการเชื่อมต่อ datachannel แต่จะละเว้นสมาชิกพจนานุกรมแทน

การนำ WebRTC getStats encoderImplementation และ decoderImplementation "unknown" ออก

getStats API ของ WebRTC จะแสดงชื่อการติดตั้งใช้งานโปรแกรมเปลี่ยนไฟล์และโปรแกรมถอดรหัสสำหรับวิดีโอขาออกและขาเข้า โดยจะไม่แสดงค่า "unknown" อีกต่อไปในกรณีที่มีการค้นหาสถิติก่อนที่จะเข้ารหัสหรือถอดรหัสเฟรมวิดีโอ แต่จะละเว้นสมาชิกพจนานุกรมแทน

พร็อพเพอร์ตี้ CSS -webkit-highlight

นำพร็อพเพอร์ตี้ CSS -webkit-highlight ที่มีไว้เพื่อไฮไลต์ข้อความออก แต่ไม่เคยเป็นมาตรฐาน ซึ่งไม่มีผลที่มองเห็นได้ใน Chromium (ระบบแยกวิเคราะห์แต่ไม่เคยใช้ในการแสดงผลเนื้อหา) พร็อพเพอร์ตี้นี้ถูกนำออกจาก WebKit ในปี 2014 โดยมีการทำเครื่องหมายว่าเลิกใช้งานแล้วใน MDN และเพิ่งถูกแทนที่ด้วยข้อกำหนดจำลองของ CSS Highlight