自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Chrome 84正式發(fā)布,支持私有方法、用戶空閑檢測!

開發(fā) 前端
Chrome 一直在關(guān)注這些網(wǎng)站的準備情況,Chrome 84 會同時恢復(fù)對 SameSite cookie 的強制開啟,同時對 Chrome 80+ 啟用強制開啟。

速覽

  •  SameSite Cookie 恢復(fù)強制開啟
  •  棄用 TLS1.0 和 TLS1.1
  •  Web animations API 更新
  •  支持網(wǎng)頁離線加載數(shù)據(jù)
  •  支持喚醒鎖
  •  Web Assembly SIMD 進入實驗階段
  •  DevTools 新增 Issues 選項卡
  •  JavaScript 支持私有方法
  •  JavaScript 支持弱引用

安全更新

恢復(fù) SameSite Cookie 的更改

在4月,Chrome 暫時推遲了 SameSite Cookie 屬性的推行,以確保在 COVID-19 響應(yīng)的關(guān)鍵初始階段提供基本服務(wù)的網(wǎng)站的穩(wěn)定性。

這幾個月,Chrome 一直在關(guān)注這些網(wǎng)站的準備情況,Chrome 84 會同時恢復(fù)對 SameSite cookie 的強制開啟,同時對 Chrome 80+ 啟用強制開啟。

棄用 TLS1.0 和 TLS1.1

TLS(傳輸層安全性)是保護 HTTPS 的協(xié)議。它的歷史可以追溯到將近20年的 TLS1.0 及其更早的前身SSL,TLS1.0和1.1都有許多缺點:

  •  TLS 1.0和1.1在完成計算哈希中使用均為弱哈希的MD5和SHA-1。
  •  TLS 1.0和1.1在服務(wù)器簽名中使用MD5和SHA-1。
  •  TLS 1.0和1.1僅支持RC4和CBC密碼。RC4已損壞,此后會刪除。TLS的CBC模式構(gòu)造存在缺陷,容易受到攻擊。
  •  TLS 1.0的 CBC 密碼還會錯誤地構(gòu)造其初始化向量。
  •  TLS 1.0不再符合 PCI-DSS。

支持 TLS1.2 是避免上述問題的先決條件。TLS工作組已棄用TLS 1.0和1.1。Chrome 現(xiàn)在也已棄用這些協(xié)議。

Web animations API

Chrome 84 為 Web animations API 添加了大量以前不支持的特性。

Promise 支持

animation.ready 和 animation.finished 支持 Promise 調(diào)用: 

  1. const transformAnimation = modal.animate(openModal, openModalSettings);  
  2. transformAnimation.finished.then(() => { text.animate(fadeIn, fadeInSettings)}); 

性能提升

在基于事件(例如mousemove)創(chuàng)建動畫時,每次都會創(chuàng)建一個新的動畫,這會快速消耗內(nèi)存并降低性能。為了解決此問題,瀏覽器中引入了可替換動畫,實現(xiàn)了自動清理,將完成的動畫標記為可替換,如果被另一個完成的動畫替換,則將其自動刪除。 

  1. elem.addEventListener('mousemove', evt => {  
  2.  rectangle.animate(  
  3.    { transform: translate(${evt.clientX}px, ${evt.clientY}px) },  
  4.    { duration: 500, fill: 'forwards' }  
  5.  );  
  6. }); 

每次鼠標移動時,瀏覽器都會重新計算中每個球的位置,并為該新點創(chuàng)建一個動畫。瀏覽器現(xiàn)在知道在以下情況下刪除舊動畫:

  •  動畫完成后。
  •  在合成順序中還有一個或多個動畫也已完成。
  •  新的動畫是動畫相同的屬性。

更加平滑的動畫復(fù)合模式

你現(xiàn)在可以設(shè)置動畫的合成模式,這意味著除了默認的 replace 模式之外,動畫可以是累加的。合成模式使開發(fā)人員可以編寫不同的動畫,并可以控制效果的組合方式?,F(xiàn)在支持三種復(fù)合模式:'replace'(默認模式)'add'、和 'accumulate'。

在默認的 'replace' 復(fù)合模式下,最終動畫將替換 transform 屬性并最終顯示為 rotate(360deg) scale(1.4)。對于 'add',Composite 添加旋轉(zhuǎn)并乘以比例,最終狀態(tài)為 rotate(720deg) scale(1.96)。'accumulate' 合并轉(zhuǎn)換,結(jié)果為 rotate(720deg) scale(1.8)。

Content indexing API

使用新添加的 Content Indexing API 你可以為可脫機使用的內(nèi)容添加 URL 和元數(shù)據(jù)。然后通過這些元數(shù)據(jù)將內(nèi)容呈現(xiàn)給用戶,從而提高可發(fā)現(xiàn)性。

這樣,你的網(wǎng)站在沒有網(wǎng)絡(luò)鏈接的時候也是可用的。

下面是一個調(diào)用示例子: 

  1. const registration = await navigator.serviceWorker.ready;  
  2. await registration.index.add({  
  3.   // Required; set to something unique within your web app.  
  4.   id: 'article-123',  
  5.   // Required; url needs to be an offline-capable HTML page.  
  6.   // For compatibility during the Origin Trial, include launchUrl as well.  
  7.   url: '/articles/123',  
  8.   launchUrl: '/articles/123',  
  9.   // Required; used in user-visible lists of content.  
  10.   title: 'Article title',  
  11.   // Required; used in user-visible lists of content.  
  12.   description: 'Amazing article about things!',  
  13.   // Required; used in user-visible lists of content.  
  14.   icons: [{  
  15.     src: '/img/article-123.png',  
  16.     sizes: '64x64',  
  17.     type: 'image/png',  
  18.   }],  
  19.   // Optional; valid categories are currently:  
  20.   // 'homepage', 'article', 'video', 'audio', or '' (default).  
  21.   category: 'article',  
  22. }); 

Wake lock API

你是否曾經(jīng)有過這樣的困擾:一邊看電腦屏幕一邊在做其他事情,然后電腦很長時間沒有響應(yīng)就進入屏幕保護了。

通過 Wake lock API 可以讓網(wǎng)頁請求喚醒鎖,以防止屏幕變暗或者進入屏幕保護。

可以使用 navigator.wakeLock.request() 調(diào)起喚醒鎖,并且結(jié)合 setTimeout 在一段時間后自動釋放: 

  1. // The wake lock sentinel.  
  2. let wakeLock = null 
  3. // Function that attempts to request a screen wake lock.  
  4. const requestWakeLock = async () => {  
  5.   try {  
  6.     wakeLock = await navigator.wakeLock.request('screen');  
  7.     wakeLock.addEventListener('release', () => {  
  8.       console.log('Screen Wake Lock was released');  
  9.     });  
  10.     console.log('Screen Wake Lock is active');  
  11.   } catch (err) {  
  12.     console.error(`${err.name}, ${err.message}`);  
  13.   }  
  14. };  
  15. // Request a screen wake lock…  
  16. await requestWakeLock();  
  17. // …and release it again after 5s.  
  18. window.setTimeout(() => {  
  19.   wakeLock.release();  
  20.   wakeLock = null 
  21. }, 5000); 

Idle Detection API

空閑檢測(Idle Detection API)會在用戶閑置時通知開發(fā)人員,指示諸如與鍵盤,鼠標,屏幕長時間沒有交互,屏幕保護程序激活,屏幕鎖定或移動到其他屏幕之類的事情。開發(fā)人員可以自定義的閾值來觸發(fā)通知。

[[334615]]

下面這些場景很適合使用空閑檢測:

  •  聊天軟件或在線社交網(wǎng)站可以使用此API來通知用戶當前是否可以聯(lián)系他們的聯(lián)系人。
  •  例如博物館展示程序類的應(yīng)用可以通過這個API來在沒有交互后返回首頁。
  •  需要復(fù)雜計算(例如繪制圖表)的應(yīng)用程序可以將這些計算限制在用戶與其設(shè)備進行交互的時候。

檢測空閑檢測是否可用: 

  1. if ('IdleDetector' in window) {  
  2.   // Idle Detector API supported  

調(diào)用示例: 

  1. // Create the idle detector  
  2. const idleDetector = new IdleDetector();  
  3. // Set up an event listener that fires when idle state changes.  
  4. idleDetector.addEventListener('change', () => {  
  5.   const uState = idleDetector.userState;  
  6.   const sState = idleDetector.screenState;  
  7.   console.log(`Idle change: ${uState}, ${sState}.`);  
  8. });  
  9. // Start the idle detector.  
  10. await idleDetector.start({  
  11.   threshold: 60000,  
  12.   signal,  
  13. }); 

Web Assembly SIMD

SIMD(Single Instruction Multiple Data)即單指令流多數(shù)據(jù)流,是一種采用一個控制器來控制多個處理器,同時對一組數(shù)據(jù)(又稱“數(shù)據(jù)向量”)中的每一個分別執(zhí)行相同的操作從而實現(xiàn)空間上的并行性的技術(shù)。簡單來說就是一個指令能夠同時處理多個數(shù)據(jù)。

WebAssembly SIMD 提議的最終目標是將向量運算引入 WebAssembly 規(guī)范中,這可以大大加速音頻/視頻編解碼、圖像處理應(yīng)用程序、密碼應(yīng)用程序等高級計算應(yīng)用程序。雖然還在實驗階段,現(xiàn)在已經(jīng)被開源程序廣泛使用了(如 Halide、OpenCV.js、XNNPACK)都支持 WebAssembly SIMD 。

我們能很明顯的看到 SIMD 的性能差異。如果沒有 SIMD,則現(xiàn)代筆記本電腦每秒只能獲得3幀左右的圖像,而啟用 SIMD 時,可以獲得 15-16 幀/秒的平滑體驗。

下面是一個更有趣的 "隱身" 例子:

WebAssembly SIMD 原始版本試用版可在 Chrome 84-86 版中進行實驗。

DevTools 更新

issues 選項卡

抽屜中新增來 issues 選項卡,目的是幫助減控制臺輸出的混亂。

目前,控制臺是網(wǎng)站開發(fā)者、庫、框架和 Chrome 本身記錄消息、警告和錯誤的中心位置。Issues 選項卡以結(jié)構(gòu)化的、聚合的、可操作的方式顯示來自瀏覽器的警告,鏈接到 DevTools 中受影響的資源,并提供如何修復(fù)這些問題的指導(dǎo)。隨著時間的推移,越來越多的 Chrome 警告將出現(xiàn)在 Issues 標簽而不是控制臺,這將有助于減少控制臺的混亂。

性能面板更新

“性能” 面板現(xiàn)在在頁腳中顯示 “總阻塞時間(TBT)” 信息。TBT是一種負載性能指標,可幫助量化頁面到達可用花了多長時間。它實質(zhì)上測量的是頁面看起來可用的時間(因為其內(nèi)容已呈現(xiàn)到屏幕上),但實際上不可用, 因為 JavaScript 阻止了主線程,因此頁面無法響應(yīng)用戶輸入。TBT 是近似于首次輸入延遲的主要實驗室指標,它是 Google 的新 Core Web Vitals 之一。

要獲取 TBT ,請不要使用 Reload Page 重新載入頁面工作流來記錄頁面加載性能。而是單擊 Record 記錄,手動重新加載頁面,等待頁面加載,然后停止記錄。如果看到, Total Blocking Time: Unavailable 則表示 DevTools無法從 Chrome 的內(nèi)部配置文件數(shù)據(jù)中獲取所需的信息。

另外,還支持了 CLS:

圖片預(yù)覽

將鼠標懸停在 background-image 上可以在提示工具中看到圖片預(yù)覽:

V8 v8.4 - 支持私有方法

在 v7.4 版本中新增加的私有字段進一步支持了私有方法和訪問器。從語法上講,私有方法和訪問器的名稱以#開頭,就像私有字段一樣。下面簡要介紹一下該語法: 

  1. class Component {  
  2.   #privateMethod() {  
  3.     console.log("I'm only callable inside Component!");  
  4.   }  
  5.   get #privateAccessor() { return 42; }  
  6.   set #privateAccessor(x) { }  

私有方法和訪問器具有與私有字段相同的作用域規(guī)則和語義。

V8 v8.4 - 弱引用

JavaScript 是一種垃圾回收語言,這意味著當垃圾回收器運行時,程序無法再訪問的對象所占用的內(nèi)存可能會自動回收。除了 WeakMap 和中的 WeakSet 引用之外, JavaScript 中的所有引用都很強大,可以防止對引用的對象進行垃圾回收。例如下面的代碼:只要 globalRef 通過全局作用域是可訪問的,它和它的回調(diào)屬性中的函數(shù)都不會被回收。 

  1. const globalRef = {  
  2.   callback() { console.log('foo'); }  
  3. }; 

JavaScript 開發(fā)者現(xiàn)在可以通過 WeakRef 功能對對象進行弱引用。如果弱引用所引用的對象也未得到強引用,則它們不會阻止對其進行垃圾回收。 

  1. const globalWeakRef = new WeakRef({  
  2.   callback() { console.log('foo'); }  
  3. });  
  4. (async function() {  
  5.   globalWeakRef.deref().callback();  
  6.   await new Promise((resolve, reject) => {  
  7.     setTimeout(() => { resolve('foo'); }, 42);  
  8.   });  
  9.   globalWeakRef.deref()?.callback();  
  10. })();  

 

責(zé)任編輯:龐桂玉 來源: 前端大全
相關(guān)推薦

2013-05-23 10:26:27

Chrome for google

2013-02-22 17:15:21

Chrome 25瀏覽器

2022-03-17 08:30:28

Python私有屬性私有方法

2012-03-29 09:18:44

Chrome 18正式發(fā)布

2012-08-02 13:22:04

Chrome 21瀏覽器

2017-03-12 10:38:56

Chromewindows

2020-12-16 12:30:55

FirefoxFirefox 84瀏覽器

2014-04-09 13:03:33

Chrome 34谷歌瀏覽器

2012-03-13 16:14:09

JavaJUnit

2011-04-28 09:43:21

Chrome 11

2011-02-18 09:50:11

Chrome DevChrome 11

2013-10-16 14:39:48

Chrome瀏覽器

2010-01-27 10:37:35

2013-04-16 09:56:33

GlusterFSOpenStack

2013-11-13 15:54:20

Chrome 31瀏覽器

2011-03-09 09:56:47

2010-03-19 09:18:07

Chrome 4.1新版發(fā)布

2010-01-26 09:46:16

2023-09-16 19:38:17

Python私有屬性私有方法

2013-05-22 09:20:42

Chrome 27瀏覽器
點贊
收藏

51CTO技術(shù)棧公眾號