Chrome 81Îȶ¨°æÊǹȸè¹Ù·½Ðû²¼¹«²¼µÄ×îа汾chromeä¯ÀÀÆ÷£¬±¾´Î¹«²¼µÄ×îа汾chrome 81°æ±¾×î´óµÄ±ä»¯ÊÇÊÊÓÃPayment Request API£¬³ý´ËÖ®Í⻹ʵÏÖÁ˿ɿ¿ÐÔ¸ÄÉÆ¼°ÆäÄÑÌâÐÞ²¹¡£Chrome 81Îȶ¨°æÔÚAndroid·þÎñƽ̨ÉÏÊÊÓÃÓ¦ÓðüÀ¨MP4£¨ISOBMFF£©Æ÷ÃóµÄVP9¿ªÔ´ÏµÍ³Ãâ˰Õþ²ßµÄÊÓÆµ±àÂë¸ñʽ£¬³ý´ËÖ®Í⻹ÊÊÓÃÈ«ÐÂÉý¼¶VP9string¸ñʽ¡£
Chrome 81°æ±¾ÒÔºó£¬Google²»»áÔÙÓ¦Óö©ÖƵÄfetch()ºÊýÀ´ä¯ÀÀ´¢´æµÄµÇ½ÃÜÂ룬·´¶øÊÇÈÿª·¢ÈËÔ±Ó¦ÓÃCredential Management API¿ªÕ¹¸ü¼òµ¥µÄ¹ÜÀí·½·¨¡£³ý´ËÖ®Í⣬а汾ChromeÊÊÓÃCSS @font-faceioctl£¬Í³Ò»µÄCSS font-displayÊôÐÔ¼°Æä×îеÄPaint TIMing API¡£
Chrome 81Îȶ¨°æ×ܹ²ÐÞ²¹ÁË40´¦ÍøÂ簲ȫÎÊÌ⣬°üÀ¨IndexedDB, V8ºÍPPAPIµÄ after free bugs£¬BlinkÄ£¿éÖÐUIspoofing£¬¹È¸èÀ©Õ¹³ÌÐòµÄÖÖÀà´íÂÒ£¬pdfiumºÍPPAPIµÄ out-of-bounds writeÄÑÌâÕâЩ¡£
´ËÍ⣬Chromeä¯ÀÀÆ÷¿ª·¢°æÒ²ÂõÈëÉý¼¶£¬°æ±¾ºÅÉý¼‰ÖÁ61.0.3163.20(·þÎñƽ̨°æ±¾£º9815.13.0) £¬¶ÔÓÚ¾ø´ó¶àÊýChrome OS»úÆ÷É豸·¢²¼£¬°üº¬ÄÑÌâÐÞ²¹¡¢°²È«ÐÔÉý¼‰¼°ÆäÐÔÄÜÌá¸ß¡£
Chrome 81Îȶ¨°æÌص㣺
Paint Timing API
ËäÈ»²¢›]ÓÐÈϿɵĹ淶¿ÉÒÔÔÚÈ«²¿×´¿öϼ«ÖµØÌåÏÖÍøÒ³Ò³ÃæµÄÔØÈë•r¼ä£¬First Paint and First Contentful Paint ÒÀȻΪ¿¼Á¿Ò³Ãæ¼ÓÔØÆÚÄÚÖØÒªµÄÓû§²Î¼Ó½×¶Î¸øÓèÁ˾ßÓÐʹÓüÛÖµµÄÊý¾ÝÐÅÏ¢¡£ÎªÁ˸üºÃµØÈÿª·¢ÈËÔ±Äܹ»¸üºÃµØ¶´Ï¤ÍøÖ·µÄÔØÈëÐÔÄÜ£¬È«ÐÂÉý¼¶µÄ Paint Timing API ¹«²¼Á˲¶×½ First Paint and First Contentful Paint µÄÖ¸±êÖµ¡£
¡ø Google µÄ First Paint and First Contentful Paint ½ØÆÁ£¬½ÚÑ¡×Ô Google I/O 2017 ÉϹ«²¼µÄ¡¶»¥ÁªÍøÐÔÄÜ£º·¢¾ò×îΣº¦Óû§¸ÐÊܵÄÖ¸±êÖµ¡·(Web Performance: Leveraging the Metrics that Most Affect User Experience)
CSS font-display
¿ÉÃâ·ÑÏÂÔØµÄÍøÒ³×ÖÌå³£³£ÓÃÒÔ½¨Á¢ÊÓ¾õ³å»÷¸ü¶àÖÖ¶àÑùµÄÍøÒ³Ò³Ãæ¸ÐÊÜ¡£ÔÚÀúÊ·ÉÏ£¬ÎªÁ˸üºÃµØ±£Ö¤ÊÓ¾õЧ¹û׼ȷÐÔ£¬Chrome Ò»Ö±ÑÓ³Ùʱ¼ä3DäÖȾÎÄ×Ö£¬Ö±µ½ÓÐÑ¡¶¨µÄ×ÖÌåÑùʽ¿ÉÒÔÓá£Êâ²»Öª£¬ÔÚÊý¾ÝÁ¬½ÓÇ·¼ÑµÄÇéÐÎÏ£¬ÏÂÔØ×ÖÌåºÜÓпÉÄܱØÐ뼸ÃëµÄ•r¼ä£¬±È½ÏÑÏÖØÑÓ³Ùʱ¼äÁËÓû§²éѯƒÈÈݵĕr¼ä¡£Èç½ñ£¬Chrome ÊÊÓà CSS @font-face ioctlºÍÏà¶ÔÓ¦µÄ font-display ÊôÐÔ£¬ÈÝÐí¿ª·¢ÈËÔ±ÌØ¶¨ Chrome ÔÚÏÂÔØ×ÖÌåʱÔõÑù¼°ÆäʲôʱºòÏÔʾÎı¾ƒÈÈÝ¡£
Credential Management API µÄ¸ÄÉÆ
Ϊ»ØÓ¦Öڶ࿪·¢ÈËÔ±µÄÒâ¼û·´À¡£¬Ò²ÎªÁ˸üºÃµØÊ¹ Credential Management API ¸ü±ãÓÚÓÃÒÔËùÓÐÍøÒ³£¬Èç½ñÒѲ»»áÔÙ±ØÐë×Ô¶¨ fetch() À´ä¯ÀÀ´¢´æµÄµÇ½ÃÜÂë¡£´Ó Chrome 81 Öð½¥£¬Óû§µÄµÇ½ÃÜÂëÈç½ñ½«Á¢¼´×öΪ PasswordCredential µÄÒ»²¿·Ö»Øµ½¡£
³ý´ËÖ®Í⣬ΪÁ˸üºÃµØÄܹ»¸üºÃµØÓ³³ÄÎÒÃÇÔÚ»¥ÁªÍøÉí·ÝÈÏÖ¤µ÷ÑÐ×éÖг£×öµÄ¹¤×÷ÖУ¬´ó¼Ò»¹½øÐÐÁËһϵÁбä¸ü¡£Õâ°üº¬ÆúÓà requireUserMediation£¬ÒѾ½«ÆäÖØÐÂÃüÃûΪ preventSilentAccess¡£
´Ë°æ±¾ÖеıðµÄÌØµã
Èç½ñ£¬pc¶ËµÄ Chrome Ò²ÊÊÓà Payment Request API¡£
Èç½ñ£¬ÍøÖ·¿ÉÒÔ¸ù¾ÝÓ¦Óà Payment Request API µÄÔÉú̬ Android ¸¶¿îÔËÓÃÀ´ÊÕ¸¶¿î¡£
Èç½ñÊÊÓÃÄ¿±êµÄ Rest ºÍ Spread ÊôÐÔ£¬Õâ¼òµ¥»¯ÁËÄ¿±êµÄºÏÆ´ºÍdz¶È¸´ÖƼ°Æä¸÷ÖÖ¸÷Ñù²»ÄܱäÄ¿±êͼ°¸Éè¼ÆµÄÍê³É¡£
ƾ½èÈ«ÐÂÉý¼¶ Web Budget API£¬¾ß±¸ÏûÏ¢ÍÆËÍͨ¸æ¹ÜÀíȨÏÞµÄÍøÖ·½«¿ÉÒÔÍÆËͱȽÏÓÐÏÞ×ÜÊýµÄÏûÏ¢ÍÆËÍÐÅÏ¢£¬ÕâÖÖÏûÏ¢ÍÆËÍÐÅÏ¢¿ÉÒÔ¿ªÆôͬšiÊý¾ÝÐÅÏ¢»ò¹ØµôÓû§ÒÑÔÚ±ðµÄ»úÆ÷É豸ÉϽâ¾ö¹ýµÄͨ¸æ£¨¶ø²»ÓñíÃ÷¶ÔÓû§Óɴ˿ɼûµÄͨ¸æ£©ÕâÀàµÄºǫ́ÈÎÎñ¡£
Èç½ñÊÊÓÃÈ«ÐÂÉý¼¶ Web Push Encryption ¸ñʽ£¬¿ÉÓ¦Óà PushManager.supportedContentEncodings À´¼ìÑé¸Ã¸ñʽµÄÓ¦Óò¿Î»¡£
Èç½ñ¸øÓè PushSubion.expirationTime£¬¿Éͨ¸æÍøÖ·Ä³Ò»¶¨ÔÄʲôʱºòµ½ÆÚ¼°ÆäÊDz»Êǵ½ÆÚ¡£
ΪÁ˸üºÃµØ¸Ä½øÐÔÄܺͿÉÔ¤¼ûÐÔ£¬Èç½ñ£¬Ã¿Ò»¸ö AnimationFrame ´«ËÍÒ»´Î pointermove ºÍ mousemove ÊÂÇ飬ÕâÓë scroll ºÍ TouchEvents ÊÂÇéµÄµ±½ñ×÷ÓÃÏà·ûºÏ¡£
Èç½ñ¸øÓè :focus-within CSS αÀ࣬»áΣº¦:focus αÀàΣº¦µÄÒ»ÇÐÔËØ¼°ÆäÊÜ :focus Σº¦µÄÅÉÉúÀàµÄÒ»ÇÐÔËØ¡£
Èç½ñ¸øÓè CSS ֡ʱÖÓÆµÂÊ×÷Óã¬Õë¶Ô¶¯ÂþÓ¦ÒÔÍêȫһÖµÄʱ¼ä±íÃ÷È«²¿Ö¡£¨°üº¬Í·Ö¡ºÍβ֡£©µÄ¶¯ÂþÑ»·ÏµÍ³Ê®·ÖÓÐЧ¡£
ΪÁ˸üºÃµØ¸øÓèÒ»ÖÖ²¶×½±àдʵ¼Ê²Ù×÷µÄÌá¸ß·½Ê½£¬InputEvent Èç½ñÈÝÐí¸ù¾Ý½Å±¾ÖÆ×÷À´¹ÜÀí·½·¨Óû§¼üÈ룬·á¸»¶à²ÊÁ˸øÓè¸ø¿É±àдÔËØµÄ¹Ø¼üµã¡£
ΪÁ˸üºÃµØÌáÉý°²È«ÏµÊý£¬Èç½ñ£¬½öÔÚÖ¡ÊÔ×űíÃ÷ÆäÒѽӵ½Óû§¶¯×÷»òÓû§»¥¶¯Ê±£¬²Å»á±íÃ÷Óû§ÀëÈ¥ÍøÖ·Ê±Ð迪ÆôµÄ BeforeUnload Ìáʾ¿ò£¬ËäÈ»ÒÀÈ»»á·ÖÅä BeforeUnloadEvent¡£
Èç½ñ£¬¿ÉÒÔËæ MP4 (ISO BMFF) Æ÷Ãó Ò»ÆðÓ¦Óà VP9 ÕâÒ»¶ÔÍ⿪·Å¡¢ÃâÖø×÷ȨµÄÊÓÆµ±àÂë¸ñʽ£¬¸Ã¸ñʽ±ØÐëϱßÌá¼°µÄȫРVP9 ×Ö·û´®Êý×é¸ñʽ¡£
Èç½ñ¸øÓèÒ»ÖÖ×îÐ嵀 VP9 ×Ö·û´®Êý×é¸ñʽ£¬¸÷ÖÖ¸÷ÑùÓëÐÂÎÅýÌåÏà¹ØµÄ API ¾ù½ÓÊոøñʽ£¬Õâ´Ùʹ¿ª·¢ÈËÔ±¿ÉÒÔÐðÊö¸÷ÖÖ¸÷ÑùÊÓîlתÂëÈí¼þÖйú¹²²úµ³Óᢵ«²¢Î´¹«²¼µÄ±àºÅÊôÐÔ¡£
ֹͣʹÓúͿÉÀ©Õ¹ÐԵĸĽø
getElementsByTagName() Èç½ñ½ÓÄɺϺõÏÞÖÆ±ê×¼µÄÃû×Ö£¬ÒÔ»ØÓ¦¶ÔÓÚ DOM ±ê×¼µÄÒ»ÏîÉý¼¶¡£
Èç½ñ£¬/deep/ µÄ¸öÈËÐÐΪÀàËÆ descendant ×é³É·û£¬Êµ¼ÊÉϱãÊÇÒ»¸ö¿Õʵ¼Ê²Ù×÷¡£
ΪÁ˸üºÃµØ¸Ä½øÓû§¸ÐÊÜ£¬Èç½ñ£¬¼ÙÈçÓû§Î´È·Á¢µã°´Ö¡»òÒ»ÇÐÖÃÈëÖ¡£¬Ôò¶Ô Navigator.vibrate() µÄÆôÓûáÂíÉϻص½ false£¬ÕâÓë cross-origin iframes µÄ¸öÈËÐÐΪͬÑù¡£
WEBKIT_KEYFRAME_RULE ºÍ WEBKIT_KEYFRAMES_RULE ÒÑÇå³ý£¬´úÖ®ÒÔÎÞ×÷Ϊǰ׺µÄ¹æ·¶»¯ API£¬¼´ KEYFRAME_RULE ºÍ KEYFRAMES_RULE¡£
ÒѾ´Ó document.createEvent() Çå³ý¶Ô·Ç±ê WebKitAnimationEvent ºÍ WebKitTransitionEvent µÄÊÊÓá£
ΪÁ˸üºÃµØÄܹ»¸üºÃµØ·ûºÏÒªÇó£¬NodeIterator.filter ºÍ TreeWalker.filter ²»»áÔÙ°üÑb Java Ä¿±ê£¬¶øÇÒÒÑ´Ó window.NodeFilter Çå³ý .prototype¡£
ÒѾÇå³ý RTCPeerConnection.getStreamById()£¬Ç¿ÁÒÍÆ¼öÓ¦Óà polyfill Ìæ´úÔ·½Ê½¡£
SVGPathElement.getPathSegAtLength() Òѱ»ÆúÓã¬ÒòΪËüÒÑ´Ó SVGPathElement ¹æ¸ñÐͺÅÖÐÇå³ý¡£
ÒÑ´Ó Fetch API Çå³ýHeaders.prototype.getAll()£¬ÒÔÈÚÈë´Ó±ê×¼ÖÐÇå³ý¸Ã·½Ê½¡£
chrome 81Îȶ¨°æÊÓîl£º
ÊÊÓÃÓÚ¸÷¸öÊÖ»·µÄapp
ÀÐÂÓû§×¢²á׬ǮµÄÈí¼þ
ÐÂÓû§Ãâµ¥µÄapp
ÑûÇëÐÂÓû§×¬Ç®µÄÈí¼þ
ÊÊÓÃÓÚÖйúµÄÈÕ±¾½»ÓÑÈí¼þ
¶àÌØÊÖÓÎרÌâΪÄúÌṩÊÊÓÃÓÚ¸÷¸öÊÖ»·µÄapp,Ö§³Ö¶àÆ·ÅÆÊÖ»·µÄapp¡£°²×¿Æ»¹û°æÒ»Ó¦¾ãÈ«,ÕÒÊÊÓÃÓÚ¸÷¸öÊÖ»·µÄapp¾ÍÀ´¶àÌØÈí¼þÕ¾ÏÂÔØ!
2024×îÐÂÍø×¬Èí¼þÏÂÔØ¾ÍÔÚ¶àÌØÈí¼þÏÂÔØÖÐÐÄ£¬ÔÚÀÐÂÓû§×¢²á׬ǮµÄÈí¼þÖÐÃ×¶à׬Ǯ¡¢¶ßÀ²×¬¡¢Ð¡Å£×¬Ç®µÈÈí¼þÄܰïÄã¸ü¿ìÕÒµ½Õý¹æ°²È«µÄÍø×¬Èí¼þ£¬ÔÚ¿ÕÏÐÖ®ÓàÄÜ׬Á㻨Ǯ¡£ÔÚ׬Ǯ¹·¡¢58׬Ǯƽ̨(ÊÔÍæ×¬Ç®)Öл¹ÌṩÁ˸üÈ«µÄÓÎÏ·Ô¼Íæ¡¢ÓïÒôÁÄÌì¡¢¼¼ÄÜ·ÖÏíµÈ¹¦ÄÜ£¬ÏÂÔØÀÐÂÓû§×¢²á׬ǮµÄÈí¼þÈí¼þ¾ÍÔÚ¶àÌØÈí¼þ°²È«ÏÂÔØÖÐÐÄ
¶àÌØÊÖÓÎרÌâΪÄúÌṩÐÂÓû§Ãâµ¥µÄapp,Ò»¸öÐÂÊÖ»úºÅµÄ¸£Àû¡£°²×¿Æ»¹û°æÒ»Ó¦¾ãÈ«,ÕÒÐÂÓû§Ãâµ¥µÄapp¾ÍÀ´¶àÌØÈí¼þÕ¾ÏÂÔØ!
ÏÖÈç½ñ£¬Íø×¬µÄ·½Ê½ÊǶàÖÖ¶àÑùµÄ£¬Ð¡±à½ñÌìΪ´ó¼ÒÍÆ¼ö¼¸¿î¿ÉÒÔÑûÇëÐÂÓû§×¬Ç®µÄÈí¼þ£¬Èí¼þΪÓû§Ìṩ¼òµ¥±ã½ÝµÄÍø×¬·½Ê½£¬Óû§Í¨¹ýÑûÇëºÃÓÑ£¬ºÃÓÑÒÔÐÂÓû§Éí·Ý×¢²á£¬¾ÍÄÜ׬ȡÊÕÒæÁË£¬ÑûµÄ¶à£¬×¬µÄ¶à£¬Ï²»¶µÄÓû§¿ÉÒÔÏÂÔØÊ¹Óá£
¶àÌØÈí¼þվΪÄúÌṩ×öÊÊÓÃÓÚÖйúµÄÈÕ±¾½»ÓÑÈí¼þרÌâ,ÔÚÕâÀﰲ׿°æÆ»¹û°æµÈÓ¦ÓÃÓ¦Óо¡ÓУ¬ÕÒÊÊÓÃÓÚÖйúµÄÈÕ±¾½»ÓÑÈí¼þ¾ÍÀ´¶àÌØÈí¼þÕ¾°É¡£