Chrome 86 กำลังเริ่มเปิดตัวเวอร์ชันเสถียรแล้ว
สิ่งที่จำเป็นต้องทราบมีดังนี้
- File System Access API พร้อมให้ใช้งานแล้วในเวอร์ชันที่เสถียร
- มีช่วงทดลองใช้จากต้นทางใหม่สำหรับ Web HID และ Multi-screen Window Placement API
- มีฟีเจอร์ใหม่ๆ ใน CSS และอีกหลายรายการ
ผมชื่อ Pete LePage ทำงานและถ่ายทำจากที่บ้าน เรามาเจาะลึกและดูว่ามีอะไรใหม่สำหรับนักพัฒนาซอฟต์แวร์ใน Chrome 86 กัน
การเข้าถึงระบบไฟล์
ปัจจุบันคุณสามารถใช้องค์ประกอบ <input type="file">
เพื่ออ่านไฟล์จากดิสก์ได้
หากต้องการบันทึกการเปลี่ยนแปลง ให้เพิ่ม download
ลงในแท็กแองเคอร์ ซึ่งจะแสดงเครื่องมือเลือกไฟล์ จากนั้นบันทึกไฟล์ คุณจะเขียนลงในไฟล์เดียวกันที่เปิดอยู่ไม่ได้ เวิร์กโฟลว์นั้นน่ารำคาญ
เมื่อใช้ File System Access API (เดิมคือ Native File System API) ซึ่งผ่านการทดลองใช้เวอร์ชันแรกและพร้อมใช้งานในเวอร์ชันเสถียรแล้ว คุณจะเรียกใช้ showOpenFilePicker()
ซึ่งจะแสดงเครื่องมือเลือกไฟล์ จากนั้นจะแสดงตัวแฮนเดิลไฟล์ที่คุณใช้อ่านไฟล์ได้
async function getFileHandle() {
const opts = {
types: [
{
description: 'Text Files',
accept: {
'text/plain': ['.txt', '.text'],
'text/html': ['.html', '.htm']
}
}
]
};
return await window.showOpenFilePicker(opts);
}
หากต้องการบันทึกไฟล์ลงในดิสก์ คุณสามารถใช้ตัวแฮนเดิลไฟล์ที่ได้ก่อนหน้านี้ หรือเรียกใช้ showSaveFilePicker()
เพื่อรับตัวแฮนเดิลไฟล์ใหม่ก็ได้
async function saveFile(fileHandle) {
if (!fileHandle) {
fileHandle = await window.showSaveFilePicker();
}
const writable = await fileHandle.createWritable();
await writable.write(contents);
await writable.close();
}
ก่อนที่จะเขียน Chrome จะตรวจสอบว่าผู้ใช้ได้ให้สิทธิ์การเขียนไว้หรือไม่ หากยังไม่ได้ให้สิทธิ์การเขียน Chrome จะถามผู้ใช้ก่อน
การเรียกใช้ showDirectoryPicker()
จะเปิดไดเรกทอรี ซึ่งช่วยให้คุณดูรายการไฟล์หรือสร้างไฟล์ใหม่ในไดเรกทอรีนั้นได้ เหมาะสําหรับโปรแกรมต่างๆ เช่น IDE หรือโปรแกรมเล่นสื่อที่โต้ตอบกับไฟล์จํานวนมาก แน่นอนว่าผู้ใช้ต้องให้สิทธิ์การเขียนก่อน
API ยังมีอะไรอีกมากมาย ลองอ่านบทความเกี่ยวกับการเข้าถึงระบบไฟล์ใน web.dev
ช่วงทดลองใช้จากต้นทาง: WebHID
อุปกรณ์ที่โต้ตอบกับมนุษย์โดยตรง หรือที่เรียกกันทั่วไปว่า HID จะรับข้อมูลจากหรือแสดงผลต่อมนุษย์ อุปกรณ์ที่มีอินเทอร์เฟซสำหรับมนุษย์มีจำนวนมาก ทั้งที่ใหม่เกินไป เก่าเกินไป หรือแปลกเกินกว่าที่จะเข้าถึงได้โดยไดรเวอร์อุปกรณ์ของระบบ
WebHID API ซึ่งพร้อมใช้งานในช่วงทดลองใช้สำหรับต้นทางจะช่วยแก้ปัญหานี้ด้วยวิธีเข้าถึงอุปกรณ์เหล่านี้ใน JavaScript เมื่อใช้ WebHID เกมบนเว็บจะใช้ประโยชน์จากเกมแพดได้อย่างเต็มที่ ซึ่งรวมถึงปุ่ม จอยสติ๊ก เซ็นเซอร์ ทริกเกอร์ ไฟ LED แพ็กเกจการสั่น และอื่นๆ
butOpenHID.addEventListener('click', async (e) => {
const deviceFilter = { vendorId: 0x0fd9 };
const opts = { filters: [deviceFilter] };
const devices = await navigator.hid.requestDevice(opts);
myDevice = devices[0];
await myDevice.open();
myDevice.addEventListener('inputreport', handleInpRpt);
});
แอปวิดีโอแชทบนเว็บสามารถใช้ปุ่มโทรศัพท์บนลำโพงเฉพาะเพื่อเริ่มหรือวางสาย ปิดเสียง และอื่นๆ
แน่นอนว่า API ที่มีประสิทธิภาพเช่นนี้จะโต้ตอบกับอุปกรณ์ได้ก็ต่อเมื่อผู้ใช้เลือกอนุญาตอย่างชัดเจนเท่านั้น
ดูรายละเอียดเพิ่มเติม ตัวอย่าง วิธีเริ่มต้นใช้งาน และการสาธิตที่น่าสนใจได้ที่การเชื่อมต่อกับอุปกรณ์ HID ที่ไม่ใช่แบบที่ใช้กันทั่วไป
ช่วงทดลองใช้จากต้นทาง: Multi-Screen Window Placement API
ปัจจุบันคุณสามารถรับพร็อพเพอร์ตี้ของหน้าจอที่มีหน้าต่างเบราว์เซอร์อยู่ได้ด้วยการเรียกใช้ window.screen()
แต่จะทำอย่างไรหากตั้งค่าจอภาพหลายจอ ขออภัย เบราว์เซอร์จะบอกคุณเกี่ยวกับหน้าจอที่แสดงอยู่เท่านั้น
const screen = window.screen;
console.log(screen);
// {
// availHeight: 1612,
// availLeft: 0,
// availTop: 23,
// availWidth: 3008,
// colorDepth: 24,
// orientation: {...},
// pixelDepth: 24,
// width: 3008
// }
Multi-Screen Window Placement API จะเริ่มต้นการทดลองใช้สำหรับลูกค้าเดิมใน Chrome 86 ซึ่งจะช่วยให้คุณระบุหน้าจอที่เชื่อมต่อกับเครื่อง และวางหน้าต่างบนหน้าจอที่ต้องการได้ ความสามารถในการวางหน้าต่างบนหน้าจอที่เฉพาะเจาะจงเป็นสิ่งสําคัญสําหรับแอปการนำเสนอ แอปบริการทางการเงิน และอื่นๆ
คุณต้องขอสิทธิ์ก่อนจึงจะใช้ API ได้ หากไม่ดำเนินการดังกล่าว เบราว์เซอร์จะแจ้งให้ผู้ใช้ทราบเมื่อคุณพยายามใช้เป็นครั้งแรก
async function getPermission() {
const opt = { name: 'window-placement' };
try {
const perm = await navigator.permissions.query(opt);
return perm.state === 'granted';
} catch {
return false;
}
}
เมื่อผู้ใช้ให้สิทธิ์แล้ว การเรียกใช้ window.getScreens()
จะแสดงผลเป็น Promise ที่แสดงผลด้วยอาร์เรย์ของออบเจ็กต์ Screen
const screens = await window.getScreens();
console.log(screens);
// [
// {id: 0, internal: false, primary: true, left: 0, ...},
// {id: 1, internal: true, primary: false, left: 3008, ...},
// ]
จากนั้นฉันจะใช้ข้อมูลดังกล่าวเมื่อโทรหา requestFullScreen()
หรือเปิดหน้าต่างใหม่ Tom มีรายละเอียดทั้งหมดในบทความการจัดการจอแสดงผลหลายจอด้วย Multi-Screen Window Placement API บน web.dev
และอื่นๆ
ตัวเลือก CSS ใหม่ :focus-visible
ช่วยให้คุณสามารถเลือกใช้การเรียนรู้แบบเดียวกันกับที่เบราว์เซอร์ใช้เมื่อตัดสินใจว่าจะแสดงตัวบ่งชี้การโฟกัสเริ่มต้นหรือไม่
/* Focusing the button with a keyboard will
show a dashed black line. */
button:focus-visible {
outline: 4px dashed black;
}
/* Focusing the button with a mouse, touch,
or stylus will show a subtle drop shadow. */
button:focus:not(:focus-visible) {
outline: none;
box-shadow: 1px 1px 5px rgba(1, 1, 0, .7);
}
คุณปรับแต่งสี ขนาด หรือประเภทของตัวเลขหรือสัญลักษณ์หัวข้อย่อยสำหรับรายการได้ด้วย::marker
องค์ประกอบจำลองของ CSS
li::marker {
content: '😍';
}
li:last-child::marker {
content: '🤯';
}
และ Chrome Dev Summit จะพร้อมให้รับชมบนหน้าจอของคุณในเร็วๆ นี้ โปรดติดตามข้อมูลเพิ่มเติมในช่อง YouTube ของเรา
อ่านเพิ่มเติม
ข้อมูลนี้เป็นเพียงไฮไลต์สำคัญบางส่วนเท่านั้น ดูการเปลี่ยนแปลงเพิ่มเติมใน Chrome 86 ได้ที่ลิงก์ด้านล่าง
- มีอะไรใหม่ในเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome (86)
- การเลิกใช้งานและการนำออกใน Chrome เวอร์ชัน 86
- การอัปเดต ChromeStatus.com สำหรับ Chrome 86
- มีอะไรใหม่ใน JavaScript ใน Chrome 86
- รายการการเปลี่ยนแปลงที่เก็บข้อมูลซอร์สโค้ด Chromium
สมัครใช้บริการ
หากต้องการติดตามวิดีโอล่าสุดของเรา โปรดติดตามช่อง YouTube ของนักพัฒนาซอฟต์แวร์ Chrome แล้วคุณจะได้รับอีเมลแจ้งเตือนทุกครั้งที่เราเปิดตัววิดีโอใหม่ หรือเพิ่มฟีด RSS ของเราลงในโปรแกรมอ่านฟีด
ผมชื่อ Pete LePage และทันทีที่ Chrome 87 เปิดตัว เราจะมาบอกคุณถึงสิ่งใหม่ๆ ใน Chrome