In bijna elke versie van Chrome zien we een aanzienlijk aantal updates en verbeteringen aan het product, de prestaties ervan en ook de mogelijkheden van het webplatform.
In Chrome 50 (geschatte bètadatum: 10 tot 17 maart) zijn er een aantal wijzigingen in Chrome. Deze lijst kan op elk moment worden gewijzigd.
AppCache is verouderd in onveilige contexten
TL;DR : Om cross-site scripting te belemmeren, beëindigen we AppCache op onveilige oorsprongen. We verwachten dat het in Chrome 52 alleen zal werken op origines die inhoud via HTTPS aanbieden.
Intentie om te verwijderen | Chromestatustracker | Chroombug
AppCache is een functie die offline en permanente toegang tot een oorsprong mogelijk maakt, wat een krachtige escalatie van bevoegdheden is voor een cross-site scripting-aanval. Als onderdeel van een grotere inspanning om krachtige functies op onveilige oorsprongen te verwijderen .
Chrome verwijdert deze aanvalsvector door deze alleen via HTTPS toe te staan. We beëindigen HTTP-ondersteuning in Chrome 50 en verwachten deze volledig te verwijderen in Chrome 52.
Document.defaultCharset is verwijderd
TL;DR : document.defaultCharset
is verwijderd om de naleving van de specificaties te verbeteren.
Intentie om te verwijderen | Chromestatustracker | CRBug-probleem
De document.defaultCharset
, verouderd in Chrome 49, is een alleen-lezen eigenschap die de standaard tekencodering van het systeem van de gebruiker retourneert op basis van hun regionale instellingen. Het is niet nuttig gebleken om deze waarde te handhaven vanwege de manier waarop browsers de tekencoderingsinformatie gebruiken in de HTTP-reactie of in de metatag die in de pagina is ingebed.
Gebruik in plaats daarvan document.characterSet
om de eerste waarde op te halen die is opgegeven in de HTTP-header. Als dat niet aanwezig is, krijgt u de waarde die is opgegeven in het charset
attribuut van het <meta>
-element (bijvoorbeeld <meta charset="utf-8">
). Als geen van deze beschikbaar is, zal document.characterSet
de systeeminstelling van de gebruiker zijn.
Je kunt meer discussies lezen over de redenering om dit niet te specificeren in dit github-probleem
Subresourcekenmerk verwijderd uit linkelement
TL;DR : Verwijder de ondersteuning voor de subresource
voor het rel
-attribuut van HTMLLinkElement
.
Intentie om te verwijderen | Chromestatustracker | Chroombug
De bedoeling van het subresource
attribuut op <link> was om een bron vooraf op te halen tijdens de inactieve tijd van een browser. Nadat een browser een pagina heeft gedownload, kan deze bronnen zoals andere pagina's vooraf downloaden, zodat ze, wanneer ze door gebruikers worden opgevraagd, eenvoudigweg uit de browsercache kunnen worden opgehaald.
Het kenmerk subresource
had te kampen met een aantal problemen. Ten eerste heeft het nooit gewerkt zoals bedoeld. Bronnen waarnaar wordt verwezen, zijn met lage prioriteit gedownload. Het kenmerk is nooit in een andere browser dan Chrome geïmplementeerd. De Chrome-implementatie bevatte een bug waardoor bronnen tweemaal werden gedownload.
Ontwikkelaars die de gebruikerservaring willen verbeteren door inhoud vooraf te laden, hebben een aantal opties, waarvan de meest aanpasbare is het bouwen van een servicemedewerker om te profiteren van precaching en de Caches API. Aanvullende oplossingen omvatten andere waarden voor het rel
attribuut, waaronder preconnect
, prefetch
, preload
, prerender
. Sommige van deze opties zijn experimenteel en worden mogelijk niet breed ondersteund.
Verwijder de onveilige terugval van de TLS-versie
TL;DR : Verwijder een mechanisme om servers te dwingen gegevens terug te sturen met behulp van minder of niet-beveiligde versies van TLS.
Intentie om te verwijderen | Chromestatustracker | Chroombug
Transport Layer Security (TLS) ondersteunt een mechanisme voor het onderhandelen over versies, waardoor de introductie van nieuwe TLS-versies mogelijk is zonder de compatibiliteit te verbreken. Sommige servers hebben dit zo geïmplementeerd dat browsers als fallback onveilige eindpunten moesten gebruiken. Hierdoor kunnen aanvallers elke website, en niet alleen de website die verkeerd is geconfigureerd, dwingen te onderhandelen over zwakkere versies van TLS.
Getroffen sites kunnen geen verbinding maken met ERR_SSL_FALLBACK_BEYOND_MINIMUM_VERSION
. Beheerders moeten ervoor zorgen dat hun serversoftware up-to-date is. Als het probleem nog steeds niet is opgelost, neemt u contact op met de leverancier van de serversoftware om te zien of er een oplossing beschikbaar is.
Verwijder KeyboardEvent.prototype.keyLocation
TL;DR : Verwijder een onnodige alias voor het attribuut Keyboard.prototype.location
.
Intentie om te verwijderen | Chromestatustracker | Chroombug
Dit attribuut is eenvoudigweg een alias voor het attribuut Keyboard.prototype.location
, waarmee ondubbelzinnig kan worden gemaakt tussen toetsen die zich op meerdere plaatsen op een toetsenbord bevinden. Met beide kenmerken kunnen ontwikkelaars bijvoorbeeld onderscheid maken tussen de twee Enter
-toetsen op een uitgebreid toetsenbord.
Fout- en succeshandlers vereist in RTCPeerConnection-methoden
TL;DR : De WebRTC RTCPeerConnection-methoden createOffer()
en createAnswer()
vereisen nu zowel een fouthandler als een succeshandler. Voorheen was het mogelijk deze methoden aan te roepen met alleen een succeshandler. Dat gebruik is verouderd.
Intentie om te verwijderen | Chromestatustracker | Chroombug
In Chrome 49 hebben we een waarschuwing toegevoegd als je setLocalDescription()
of setRemoteDescription()
aanroept zonder een fouthandler op te geven. Het fouthandlerargument is verplicht vanaf Chrome 50.
Dit maakt deel uit van het vrijmaken van de weg voor het introduceren van beloftes over deze methoden, zoals vereist door de WebRTC-specificatie .
Hier is een voorbeeld uit de WebRTC RTCPeerConnection-demo ( main.js, regel 126 ):
function onCreateOfferSuccess(desc) {
pc1.setLocalDescription(desc, function() {
onSetLocalSuccess(pc1);
}, onSetSessionDescriptionError);
pc2.setRemoteDescription(desc, function() {
onSetRemoteSuccess(pc2);
}, onSetSessionDescriptionError);
pc2.createAnswer(onCreateAnswerSuccess, onCreateSessionDescriptionError);
}
Houd er rekening mee dat zowel setLocalDescription()
als setRemoteDescription()
een fouthandler hebben. Oudere browsers die alleen een succeshandler verwachten, zullen het fouthandlerargument eenvoudigweg negeren als het aanwezig is; Het aanroepen van deze code in een oudere browser zal geen uitzondering veroorzaken.
Over het algemeen raden we u aan voor productie-WebRTC-applicaties adapter.js
te gebruiken, een vulstuk, onderhouden door het WebRTC-project, om apps te beschermen tegen specificatiewijzigingen en verschillen in voorvoegsels.
De XMLHttpRequestProgressEvent wordt niet langer ondersteund
TL;DR : De XMLHttpRequestProgressEvent
-interface wordt verwijderd, samen met de attributen position
en totalSize
.
Intentie om te verwijderen | Chromestatustracker | Chroombug
Deze gebeurtenis bestond ter ondersteuning van de position
van de Gecko-compatibiliteitseigenschappen en totalSize
. Ondersteuning voor alle drie is in Mozilla 22 geschrapt en de functionaliteit is al lang achterhaald door 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
}
}
Verwijder de vooraf ingestelde gecodeerde media-extensies
TL;DR : vooraf ingestelde gecodeerde media-extensies zijn verwijderd ten gunste van een op specificaties gebaseerde vervanging zonder voorvoegsel.
Intentie om te verwijderen | Chromestatustracker | Chroombug
In Chrome 42 hebben we een op specificaties gebaseerde , niet-voorgefixeerde versie van gecodeerde media-extensies geleverd. Deze API wordt gebruikt voor het ontdekken, selecteren en communiceren met Digital Rights Management-systemen voor gebruik met HTMLMediaElement
.
Dat was bijna een jaar geleden. En aangezien de versie zonder voorvoegsel meer mogelijkheden heeft dan de versie met voorvoegsel, is het tijd om de versie met voorvoegsel van de API te verwijderen.
Ondersteuning voor SVGElement.offset-eigenschappen verwijderen
TL;DR : Offset-eigenschappen voor SVGElement zijn geschrapt ten gunste van de breder ondersteunde eigenschappen op HTMLElement
.
Intentie om te verwijderen | Chromestatustracker | Chroombug
Offset-eigenschappen worden al lang ondersteund door zowel HTMLElement
als SVGElement
; Gecko en Edge ondersteunen ze echter alleen op HTMLElement
. Om de consistentie tussen browsers te verbeteren, zijn deze eigenschappen in Chrome 48 verouderd en worden ze nu verwijderd.
Hoewel gelijkwaardige eigenschappen deel uitmaken van HTMLElement
, kunnen ontwikkelaars die op zoek zijn naar een alternatief ook getBoundingClientRect()
gebruiken