เราเห็นการอัปเดตและการปรับปรุงผลิตภัณฑ์ ประสิทธิภาพการทำงาน และความสามารถของแพลตฟอร์มเว็บใน Chrome เกือบทุกเวอร์ชัน
ใน Chrome 50 (วันที่ใช้รุ่นเบต้าโดยประมาณคือ 10-17 มีนาคม) มีการเปลี่ยนแปลงหลายอย่างใน Chrome รายการนี้อาจเปลี่ยนแปลงได้ตลอดเวลา
เลิกใช้งาน AppCache ในบริบทที่ไม่ปลอดภัยแล้ว
TL;DR: เราจะเลิกใช้งาน AppCache บนต้นทางที่ไม่ปลอดภัยเพื่อขัดขวางการเขียนสคริปต์ข้ามเว็บไซต์ เราคาดว่าใน Chrome 52 จะใช้งานได้ในต้นทางที่แสดงเนื้อหาผ่าน HTTPS เท่านั้น
เจตนาเพื่อนำออก | ตัวติดตาม Chromestatus | ข้อบกพร่อง Chromium
AppCache คือฟีเจอร์ที่ช่วยให้เข้าถึงต้นทางแบบออฟไลน์ได้แบบถาวร ซึ่งเป็นการโจมตีเพื่อยกระดับสิทธิ์ที่มีประสิทธิภาพสำหรับการโจมตีแบบ Cross-site Scripting ซึ่งเป็นส่วนหนึ่งของความพยายามที่มากขึ้นในการนำฟีเจอร์ที่มีประสิทธิภาพในต้นทางที่ไม่ปลอดภัยออก
Chrome จะนำเวกเตอร์การโจมตีนี้ออกโดยอนุญาตเฉพาะผ่าน HTTPS เท่านั้น เรากำลังจะเลิกรองรับ HTTP ใน Chrome 50 และคาดว่าจะนำออกไปเลยใน Chrome 52
นำ Document.defaultCharset ออกแล้ว
TL;DR: มีการนำ document.defaultCharset
ออกเพื่อปรับปรุงการปฏิบัติตามข้อกำหนด
ความตั้งใจที่จะนำออก | ตัวติดตาม Chromestatus | ปัญหา CRBug
document.defaultCharset
ที่เลิกใช้งานแล้วใน Chrome 49 เป็นพร็อพเพอร์ตี้แบบอ่านอย่างเดียวที่แสดงผลการเข้ารหัสอักขระเริ่มต้นของระบบของผู้ใช้ตามการตั้งค่าระดับภูมิภาค เนื่องจากเบราว์เซอร์ใช้ข้อมูลการเข้ารหัสอักขระในการตอบกลับ HTTP หรือในเมตาแท็กที่ฝังอยู่ในหน้านั้นไม่มีประโยชน์เท่าใดนัก
แต่ให้ใช้ document.characterSet
เพื่อรับค่าแรกที่ระบุไว้ในส่วนหัว HTTP แทน หากไม่มี คุณจะเห็นค่าที่ระบุในแอตทริบิวต์ charset
ขององค์ประกอบ <meta>
(เช่น <meta
charset="utf-8">
) สุดท้ายหากไม่มีตัวเลือกดังกล่าว document.characterSet
จะเป็นการตั้งค่าระบบของผู้ใช้
คุณสามารถอ่านเหตุผลอื่นๆ ที่ไม่ควรระบุเรื่องนี้ ในปัญหา GitHub นี้
นำแอตทริบิวต์ทรัพยากรย่อยออกจากองค์ประกอบของลิงก์แล้ว
TL;DR: ยกเลิกการรองรับค่า subresource
สำหรับแอตทริบิวต์ rel
ของ
HTMLLinkElement
เจตนาเพื่อนำออก | ตัวติดตาม Chromestatus | ข้อบกพร่อง Chromium
จุดประสงค์ของแอตทริบิวต์ subresource
ใน <link> คือการดึงข้อมูลทรัพยากรล่วงหน้าในช่วงที่ไม่มีการใช้งานของเบราว์เซอร์ หลังจากที่เบราว์เซอร์ดาวน์โหลดหน้าเว็บแล้ว เบราว์เซอร์จะสามารถดาวน์โหลดทรัพยากรต่างๆ ล่วงหน้า เช่น หน้าอื่นๆ เพื่อให้ผู้ใช้สามารถดึงข้อมูลเหล่านั้นจากแคชของเบราว์เซอร์ได้
แอตทริบิวต์ subresource
ได้รับผลกระทบจากปัญหาหลายประการ อย่างแรกเลย มันไม่ได้
ทำงานอย่างที่ควรจะเป็น ทรัพยากรที่อ้างอิงได้รับการดาวน์โหลดโดยมีลำดับความสำคัญต่ำ ไม่เคยมีการติดตั้งใช้งานแอตทริบิวต์นี้ในเบราว์เซอร์อื่นใดนอกจาก Chrome การใช้งาน Chrome มีข้อบกพร่องที่ทำให้มีการดาวน์โหลดทรัพยากร 2 ครั้ง
นักพัฒนาซอฟต์แวร์ที่ต้องการปรับปรุงประสบการณ์ของผู้ใช้ผ่านการโหลดเนื้อหาล่วงหน้ามีตัวเลือกมากมาย ตัวเลือกที่ปรับแต่งได้มากที่สุดคือการสร้างโปรแกรมทำงานของบริการเพื่อใช้ประโยชน์จากการแคชล่วงหน้าและ Caches API โซลูชันเพิ่มเติมจะรวมค่าอื่นๆ สำหรับแอตทริบิวต์ rel
ซึ่งรวมถึง preconnect
, prefetch
, preload
, prerender
ตัวเลือกบางรายการอยู่ในขั้นทดลองและอาจไม่ได้รับการรองรับอย่างกว้างขวาง
นําเวอร์ชันสำรองของ TLS ที่ไม่ปลอดภัยออก
TL;DR: นำกลไกในการบังคับให้เซิร์ฟเวอร์แสดงผลข้อมูลโดยใช้ TLS เวอร์ชันที่ไม่ปลอดภัยหรือไม่ปลอดภัย
เจตนาเพื่อนำออก | ตัวติดตาม Chromestatus | ข้อบกพร่อง Chromium
Transport Layer Security (TLS) รองรับกลไกการเจรจาเวอร์ชันต่างๆ ซึ่งช่วยให้เปิดตัว TLS เวอร์ชันใหม่ได้โดยไม่ทำให้ความเข้ากันได้หยุดชะงัก เซิร์ฟเวอร์บางแห่งติดตั้งการทำงานนี้ในลักษณะที่เบราว์เซอร์ต้อง ใช้ปลายทางที่ไม่ปลอดภัยเป็นปลายทางสำรอง ด้วยเหตุนี้ ผู้โจมตีสามารถบังคับให้ทุกเว็บไซต์ ไม่ใช่แค่เว็บไซต์ที่กำหนดค่าไม่ถูกต้อง ให้เจรจาขอ TLS เวอร์ชันที่ไม่รัดกุม
เว็บไซต์ที่ได้รับผลกระทบจะเชื่อมต่อกับ ERR_SSL_FALLBACK_BEYOND_MINIMUM_VERSION
ไม่ได้ ผู้ดูแลระบบควรตรวจสอบว่าซอฟต์แวร์ของเซิร์ฟเวอร์เป็นเวอร์ชันล่าสุด หากยังแก้ไขไม่ได้ ให้ติดต่อผู้จำหน่ายซอฟต์แวร์ของเซิร์ฟเวอร์เพื่อดูว่าสามารถแก้ไขปัญหาได้หรือไม่
นำ KeyboardEvent.prototype.keyLocation ออก
TL;DR: นำชื่อแทนที่ไม่จำเป็นสำหรับแอตทริบิวต์ Keyboard.prototype.location
ออก
เจตนาเพื่อนำออก | ตัวติดตาม Chromestatus | ข้อบกพร่อง Chromium
แอตทริบิวต์นี้เป็นเพียงชื่อแทนของแอตทริบิวต์ Keyboard.prototype.location
ซึ่งช่วยให้แยกความแตกต่างระหว่างแป้นที่อยู่หลายตำแหน่งบนแป้นพิมพ์ได้ ตัวอย่างเช่น แอตทริบิวต์ทั้ง 2 รายการช่วยให้นักพัฒนาซอฟต์แวร์แยกความแตกต่างระหว่างแป้น Enter
2 แป้นบนแป้นพิมพ์แบบขยายได้
ต้องมีเครื่องจัดการข้อผิดพลาดและความสำเร็จในเมธอด RTCPeerConnection
TL;DR: ตอนนี้ เมธอด RTCPeerConnection ของ WebRTCcreateOffer()
และ createAnswer()
ต้องใช้ตัวแฮนเดิลข้อผิดพลาดและตัวแฮนเดิลวัดความสำเร็จ ก่อนหน้านี้เราเรียกวิธีการเหล่านี้โดยใช้เครื่องจัดการความสำเร็จเท่านั้น เราจะเลิกใช้งานการใช้งานดังกล่าว
เจตนาเพื่อนำออก | ตัวติดตาม Chromestatus | ข้อบกพร่อง Chromium
ใน Chrome 49 เราได้เพิ่มคำเตือนหากคุณเรียกใช้ setLocalDescription()
หรือ setRemoteDescription()
โดยไม่ได้ใส่เครื่องจัดการข้อผิดพลาด อาร์กิวเมนต์ตัวแฮนเดิลข้อผิดพลาดเป็นสิ่งที่จำเป็นต้องมีตั้งแต่ Chrome 50
ซึ่งเป็นส่วนหนึ่งของการล้างวิธีการให้คำมั่นสัญญาในวิธีการเหล่านี้ตามที่ข้อกำหนดของ WebRTC กำหนด
นี่คือตัวอย่างจากการสาธิต RTCPeerConnection ของ WebRTC (main.js บรรทัดที่ 126)
function onCreateOfferSuccess(desc) {
pc1.setLocalDescription(desc, function() {
onSetLocalSuccess(pc1);
}, onSetSessionDescriptionError);
pc2.setRemoteDescription(desc, function() {
onSetRemoteSuccess(pc2);
}, onSetSessionDescriptionError);
pc2.createAnswer(onCreateAnswerSuccess, onCreateSessionDescriptionError);
}
โปรดทราบว่าทั้ง setLocalDescription()
และ setRemoteDescription()
มีเครื่องจัดการข้อผิดพลาด เบราว์เซอร์รุ่นเก่าที่ต้องการเพียงตัวแฮนเดิลสำเร็จจะไม่สนใจอาร์กิวเมนต์ตัวแฮนเดิลข้อผิดพลาดหากมี การเรียกใช้โค้ดนี้ในเบราว์เซอร์เวอร์ชันเก่าจะไม่ทำให้เกิดข้อยกเว้น
โดยทั่วไปแล้ว สำหรับแอปพลิเคชัน WebRTC เวอร์ชันที่ใช้งานจริง เราขอแนะนำให้ใช้ adapter.js
ซึ่งเป็น Shim ที่ดูแลโดยโปรเจ็กต์ WebRTC เพื่อปกป้องแอปจากการเปลี่ยนแปลงข้อมูลจำเพาะและความแตกต่างของคำนำหน้า
ระบบไม่รองรับ XMLHttpRequestProgressEvent อีกต่อไป
TL;DR: ระบบจะนำอินเทอร์เฟซ XMLHttpRequestProgressEvent
ออก รวมถึงแอตทริบิวต์ position
และ totalSize
เจตนาเพื่อนำออก | ตัวติดตาม Chromestatus | ข้อบกพร่อง Chromium
เหตุการณ์นี้มีไว้เพื่อรองรับพร็อพเพอร์ตี้ความเข้ากันได้ของ Gecko position
และ totalSize
Mozilla 22 มีการรองรับทั้ง 3 รายการไม่ได้ และ ProgressEvent
จะมาแทนที่ฟังก์ชันการทํางานนี้มานานแล้ว
var progressBar = document.getElementById("p"),
client = new XMLHttpRequest()
client.open("GET", "magical-unicorns")
client.onprogress = function(pe) {
if(pe.lengthComputable) {
progressBar.max = pe.total
progressBar.value = pe.loaded
}
}
นำส่วนขยายสื่อที่เข้ารหัสที่มีคำนำหน้าออก
TL;DR: เรานําส่วนขยายสื่อที่เข้ารหัสที่มีคํานําหน้าออกแล้วเพื่อแทนที่ส่วนขยายสื่อที่เข้ารหัสตามข้อกําหนดและไม่มีคํานําหน้า
เจตนาเพื่อนำออก | ตัวติดตาม Chromestatus | ข้อบกพร่อง Chromium
ใน Chrome 42 เราได้จัดส่งส่วนขยายสื่อที่เข้ารหัสที่อิงตามข้อกำหนด
และไม่มีคำนำหน้า API นี้ใช้เพื่อค้นหา เลือก และโต้ตอบกับระบบการจัดการสิทธิ์ดิจิทัลเพื่อใช้ร่วมกับ HTMLMediaElement
ซึ่งเมื่อเกือบ 1 ปีที่แล้ว และเนื่องจากเวอร์ชันที่ไม่มีคำนำหน้ามีความสามารถ มากกว่าเวอร์ชันนำหน้า ถึงเวลานำ API เวอร์ชันนำหน้าออก
นำการรองรับพร็อพเพอร์ตี้ SVGElement.offset ออก
TL;DR: เลิกใช้พร็อพเพอร์ตี้ออฟเซ็ตสำหรับ SVGElement เพื่อใช้พร็อพเพอร์ตี้ที่รองรับอย่างกว้างขวางมากขึ้นใน HTMLElement
เจตนาเพื่อนำออก | ตัวติดตาม Chromestatus | ข้อบกพร่อง Chromium
ทั้ง HTMLElement
และ SVGElement
รองรับพร็อพเพอร์ตี้ออฟเซ็ตมานานแล้ว แต่ Gecko และ Edge รองรับเฉพาะใน HTMLElement
เท่านั้น เราได้เลิกใช้งานพร็อพเพอร์ตี้เหล่านี้ใน Chrome 48 และกำลังจะนำออกเพื่อปรับปรุงความสอดคล้องระหว่างเบราว์เซอร์
แม้ว่าพร็อพเพอร์ตี้ที่เทียบเท่าเป็นส่วนหนึ่งของ HTMLElement
แต่นักพัฒนาแอปที่กำลังมองหาทางเลือกอื่นก็ใช้ getBoundingClientRect()
ได้เช่นกัน