Google
- เมื่อเกิดเหตุการณ์ onUnload ซึ่งเรียกว่าเมื่อปิดเพจแล้ว
ห้าม แสดงหน้าต่างป๊อปอัป (การเรียก window.open() ถูกบล็อก) ซึ่งจะปกป้องผู้ใช้จากการถูกบังคับให้เปิดหน้าโฆษณาหลังจากปิดไซต์ที่น่าสงสัย - ในเอ็นจิ้นจาวาสคริปต์
นำไปใช้ ระบอบการปกครองใหม่ได้ปรากฏขึ้นJIT น้อยกว่า (“—jitless”) ซึ่งทำให้สามารถรัน JavaScript ได้โดยไม่ต้องใช้ JIT (ใช้เฉพาะล่ามเท่านั้น) และไม่มีการจัดสรรหน่วยความจำที่ปฏิบัติการได้ในระหว่างการเรียกใช้โค้ด การปิดใช้งาน JIT อาจมีประโยชน์ในการปรับปรุงความปลอดภัยเมื่อทำงานกับแอปพลิเคชันเว็บที่อาจเป็นอันตราย รวมถึงเพื่อให้แน่ใจว่าบิลด์บนแพลตฟอร์มที่ห้ามการใช้ JIT (เช่น iOS สมาร์ททีวีบางรุ่น และคอนโซลเกม เมื่อปิดใช้งาน JIT การดำเนินการ JavaScript ประสิทธิภาพลดลง 40% ในการทดสอบ Speedometer 2.0 และ 80% ในการทดสอบ Web Tooling Benchmark แต่เมื่อจำลองการทำงานกับ YouTube ประสิทธิภาพลดลงเพียง 6% ในขณะที่การใช้หน่วยความจำลดลงเล็กน้อยเพียง 1.7% - V8 ยังมีการเพิ่มประสิทธิภาพใหม่ๆ มากมายอีกด้วย ตัวอย่างเช่น การดำเนินการเรียกฟังก์ชันซึ่งจำนวนพารามิเตอร์ที่ส่งจริงไม่ตรงกับจำนวนอาร์กิวเมนต์ที่ระบุเมื่อกำหนดฟังก์ชันจะถูกเร่งขึ้น 60% การเข้าถึงคุณสมบัติ DOM โดยใช้ฟังก์ชัน get ได้รับการเร่งความเร็ว ซึ่งส่งผลดีต่อประสิทธิภาพของกรอบงาน Angular การแยกวิเคราะห์ JavaScript ได้รับการเร่ง: การเพิ่มประสิทธิภาพของตัวถอดรหัส UTF-8 ทำให้สามารถเพิ่มประสิทธิภาพตัวแยกวิเคราะห์ในโหมดสตรีมมิ่ง (การแยกวิเคราะห์ขณะโหลด) ได้ 8% และการกำจัดการดำเนินการขจัดข้อมูลซ้ำซ้อนที่ไม่จำเป็นออกไปทำให้เพิ่มขึ้นอีก 10.5%
- มีการทำงานเพื่อลดการใช้หน่วยความจำของเอ็นจิ้น JavaScript
เพิ่มโค้ดเพื่อล้างแคช bytecode ซึ่งกินพื้นที่ประมาณ 15% ของขนาดฮีปทั้งหมด มีการเพิ่มขั้นตอนลงในตัวรวบรวมขยะเพื่อกำจัดไบต์โค้ดที่คอมไพล์ไม่บ่อยออกจากแคชสำหรับฟังก์ชันที่ใช้หรือฟังก์ชันที่ถูกเรียกใช้เฉพาะเมื่อเตรียมใช้งานเท่านั้น การตัดสินใจล้างข้อมูลจะขึ้นอยู่กับตัวนับใหม่ที่คำนึงถึงครั้งล่าสุดที่มีการเข้าถึงรหัสไบต์ การเปลี่ยนแปลงนี้ลดการใช้หน่วยความจำลง 5–15% โดยไม่ส่งผลเสียต่อประสิทธิภาพ นอกจากนี้ คอมไพลเลอร์ bytecode ยังไม่รวมการสร้างโค้ดที่ไม่ได้ใช้อย่างเห็นได้ชัด เช่น ซึ่งตามหลังการส่งคืนหรือตัวแบ่ง (หากไม่มีการเปลี่ยน Jump) - สำหรับ WebAssembly
นำไปใช้ รองรับเธรดและการดำเนินการอะตอมมิก (API WebAssembly Threads และ WebAssembly Atomics) - สำหรับการจัดส่งสคริปต์แยกกัน มีการเพิ่มการรองรับส่วนหัว “#!” ซึ่งกำหนดล่ามที่จะทำงาน ตัวอย่างเช่น เช่นเดียวกับภาษาสคริปต์อื่นๆ ไฟล์ JavaScript อาจมีลักษณะดังนี้:
#!/usr/bin/env โหนด
คอนโซล.บันทึก(42); - มีการเพิ่มคิวรีสื่อใหม่ลงใน CSS "
ชอบ-ลด-การเคลื่อนไหว “ ช่วยให้ไซต์สามารถกำหนดสถานะของการตั้งค่าในระบบปฏิบัติการที่เกี่ยวข้องกับการปิดใช้งานเอฟเฟกต์ภาพเคลื่อนไหว โดยใช้คำขอที่แนะนำเจ้าของไซต์สามารถ พบว่าผู้ใช้ปิดใช้งานเอฟเฟกต์ภาพเคลื่อนไหวและปิดใช้งานฟีเจอร์ภาพเคลื่อนไหวต่าง ๆ บนไซต์ เช่น ลบเอฟเฟกต์การสั่นของปุ่มที่ใช้เพื่อดึงดูดความสนใจ - นอกเหนือจากความสามารถในการกำหนดช่องสาธารณะที่นำมาใช้ใน Chrome 72 แล้ว
การสนับสนุนดำเนินการ การทำเครื่องหมายฟิลด์เป็นส่วนตัว หลังจากนั้นการเข้าถึงค่าของฟิลด์นั้นจะเปิดเฉพาะภายในคลาสเท่านั้น หากต้องการทำเครื่องหมายช่องให้เป็นส่วนตัว ให้เพิ่มเครื่องหมาย “#” หน้าชื่อช่อง เช่นเดียวกับฟิลด์สาธารณะ คุณสมบัติส่วนตัวไม่จำเป็นต้องใช้ตัวสร้างอย่างชัดเจน - เพิ่มส่วนหัว Feature-Policy HTTP ซึ่งช่วยให้คุณควบคุมพฤติกรรมของ API และเปิดใช้งานคุณสมบัติบางอย่างได้ (เช่น คุณสามารถเปิดใช้งานโหมดการทำงานแบบซิงโครนัสของ XMLHttpRequest หรือปิดการใช้งาน Geolocation API) ได้ถูกเพิ่มแล้ว
JavaScript API เพื่อควบคุมกิจกรรมของโอกาสบางอย่าง สำหรับนักพัฒนา มีสองเมธอดใหม่ document.featurePolicy และ frame.featurePolicy ซึ่งมี 3 ฟังก์ชัน:
AllowFeatures() เพื่อรับรายการคุณสมบัติที่อนุญาตสำหรับโดเมนปัจจุบัน AllowFeature() เพื่อเลือกตรวจสอบว่าได้เปิดใช้งานคุณสมบัติเฉพาะหรือไม่ และ getAllowlistForFeature() เพื่อส่งคืนรายการโดเมนที่อนุญาตให้ใช้คุณสมบัติที่ระบุในหน้าปัจจุบัน - เพิ่มการรองรับการทดลอง (“chrome://flags#enable-text-fragment-anchor”) สำหรับโหมดนี้
เลื่อนเป็นข้อความ ซึ่งช่วยให้คุณสามารถสร้างลิงก์ไปยังคำหรือวลีแต่ละรายการ โดยไม่ต้องระบุป้ายกำกับในเอกสารอย่างชัดเจนโดยใช้แท็ก "ชื่อ" หรือคุณสมบัติ "id" ในการส่งลิงก์ มีการเสนอพารามิเตอร์พิเศษ “#targetText=” ซึ่งคุณสามารถระบุข้อความสำหรับการเปลี่ยนแปลงได้ อนุญาตให้ระบุมาสก์ที่มีวลีที่ระบุจุดเริ่มต้นและจุดสิ้นสุดของส่วนย่อยโดยใช้เครื่องหมายจุลภาคเป็นตัวคั่น (เช่น “example.com#targetText=start%20words, end%20words”) - มีการเพิ่มตัวเลือกให้กับตัวสร้าง AudioContext
อัตราการสุ่มตัวอย่าง ซึ่งช่วยให้คุณตั้งค่าอัตราการสุ่มตัวอย่างสำหรับการทำงานด้านเสียงผ่าน Web Audio API - เพิ่มการสนับสนุนชั้นเรียน
นานาชาติสถานที่ ซึ่งจัดเตรียมวิธีการสำหรับการแยกวิเคราะห์และประมวลผลพารามิเตอร์ภาษา ภูมิภาค และสไตล์ที่ตั้งค่าโดยโลแคล เช่นเดียวกับการอ่านและเขียนแท็กส่วนขยาย Unicode บันทึกการตั้งค่าโลแคลของผู้ใช้ในรูปแบบซีเรียลไลซ์ - กลไก
การแลกเปลี่ยน HTTP ที่ลงนาม (SXG) ขยายด้วยเครื่องมือสำหรับแจ้งให้ทราบ ผู้จัดจำหน่ายเนื้อหาเกี่ยวกับข้อผิดพลาดในการดาวน์โหลดเนื้อหาที่เซ็นชื่อ เช่น ปัญหาในการตรวจสอบใบรับรอง การจัดการข้อผิดพลาดทำได้ผ่านส่วนขยาย APIการบันทึกข้อผิดพลาดของเครือข่าย . จำได้ว่า SXGช่วยให้ เจ้าของไซต์หนึ่งโดยใช้ลายเซ็นดิจิทัลอนุญาตให้วางตำแหน่งของหน้าบางหน้าบนไซต์อื่น หลังจากนั้นหากเข้าถึงหน้าเหล่านี้บนไซต์ที่สอง เบราว์เซอร์จะแสดงให้ผู้ใช้เห็น URL ของไซต์ดั้งเดิม แม้ว่าข้อเท็จจริงแล้ว เพจถูกโหลดจากโฮสต์อื่น - มีการเพิ่มวิธีการในคลาส TextEncoder
เข้ารหัสเข้า() ซึ่งช่วยให้คุณสามารถเขียนสตริงที่เข้ารหัสลงในบัฟเฟอร์ที่จัดสรรไว้ล่วงหน้าได้โดยตรง เมธอด encodeInto() เป็นทางเลือกที่มีประสิทธิภาพสูงแทนเมธอด encode() ซึ่งจำเป็นต้องมีการดำเนินการจัดสรรบัฟเฟอร์ทุกครั้งที่มีการเข้าถึง - ในพนักงานบริการ
ที่ให้ไว้ บัฟเฟอร์การเรียก client.postMessage() จนกว่าเอกสารจะพร้อม ข้อความที่ส่งผ่าน client.postMessage() จะถูกเก็บไว้จนกว่าเหตุการณ์ DOMContentLoaded จะเพิ่มขึ้น ตั้งค่า onmessage หรือเรียก startMessages() - ตามที่กำหนดโดยข้อกำหนดเฉพาะของการเปลี่ยน CSS
เพิ่ม เหตุการณ์ transitionrun, transitioncancel, transitionstart และ transitionend ที่สร้างขึ้นเมื่อมีการจัดคิว ยกเลิก เริ่ม หรือเสร็จสิ้นการดำเนินการการเปลี่ยนแปลง CSS - เมื่อระบุการเข้ารหัสอักขระที่ไม่ถูกต้องผ่าน overrideMimeType() หรือประเภท MIME สำหรับ XMLHttpRequest ตอนนี้จะถอยกลับไปเป็น UTF-8 แทนที่จะเป็น Latin-1
- คุณสมบัติ “อนุญาตให้ดาวน์โหลดโดยไม่ต้องเปิดใช้งานผู้ใช้” ซึ่งทำให้ดาวน์โหลดไฟล์ได้โดยอัตโนมัติเมื่อประมวลผล iframe นั้นเลิกใช้แล้วและจะถูกลบออกในรุ่นต่อๆ ไป ในอนาคต การดาวน์โหลดไฟล์โดยไม่ให้ผู้ใช้ดำเนินการอย่างชัดแจ้งจะถูกห้าม เนื่องจากมีการใช้งานในทางที่ผิด บังคับให้ดาวน์โหลด และแทรกมัลแวร์บางส่วนลงในคอมพิวเตอร์ของผู้ใช้ ผู้ใช้จะต้องคลิกบนหน้าเดียวกันเพื่อเริ่มการดาวน์โหลด เดิมทีมีการวางแผนให้นำทรัพย์สินออกใน Chrome 74 แต่การลบออกแล้ว
เลื่อนออกไป จนถึง Chrome 76 - มีการเสนอธีมสีเข้มเสริมสำหรับการออกแบบอินเทอร์เฟซสำหรับแพลตฟอร์ม Windows (ในรีลีสก่อนหน้านี้ ธีมสีเข้มได้เตรียมไว้สำหรับ macOS) เนื่องจากการออกแบบสีเข้มเกือบจะเหมือนกับการออกแบบในโหมดไม่ระบุตัวตน จึงมีการเพิ่มตัวบ่งชี้พิเศษแทนไอคอนโปรไฟล์ผู้ใช้เพื่อเน้นโหมดการทำงานส่วนตัว
- เพิ่มโอกาสสำหรับผู้ใช้องค์กรแล้ว
การจัดการระบบคลาวด์ของเบราว์เซอร์ Chrome เพื่อจัดการการตั้งค่าเบราว์เซอร์ของผู้ใช้ผ่านคอนโซลผู้ดูแลระบบของ Google
นอกจากนวัตกรรมและการแก้ไขข้อบกพร่องแล้ว เวอร์ชันใหม่ยังกำจัดอีกด้วย
ที่มา: opennet.ru