تقریباً در هر نسخه کروم شاهد تعداد قابل توجهی به روز رسانی و بهبود محصول، عملکرد آن و همچنین قابلیت های پلت فرم وب هستیم.
در Chrome 50 (تاریخ بتای تخمینی: 10 تا 17 مارس) تعدادی تغییرات در Chrome وجود دارد. این لیست در هر زمان ممکن است تغییر کند.
AppCache در زمینه های ناامن منسوخ شد
TL;DR : برای جلوگیری از اسکریپتهای متقابل سایت، AppCache را در منابع ناامن منسوخ میکنیم. ما انتظار داریم که در Chrome 52 فقط روی مبدا که محتوا را از طریق HTTPS ارائه میکند کار کند.
قصد حذف | ردیاب Chromestatus | اشکال کروم
AppCache یک ویژگی است که امکان دسترسی آفلاین و دائمی به یک مبدا را فراهم می کند، که یک افزایش امتیاز قدرتمند برای یک حمله اسکریپت بین سایتی است. به عنوان بخشی از یک تلاش بزرگتر برای حذف ویژگی های قدرتمند در مبداهای ناامن .
کروم این بردار حمله را فقط با اجازه دادن به آن از طریق 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 | اشکال کروم
هدف ویژگی subresource
در <link> این بود که یک منبع را در زمان بیکاری مرورگر واکشی کند. پس از اینکه مرورگر یک صفحه را دانلود کرد، میتواند منابعی مانند صفحات دیگر را از قبل دانلود کند تا در صورت درخواست کاربران، به سادگی از حافظه پنهان مرورگر بازیابی شوند.
ویژگی subresource
از تعدادی مشکلات رنج می برد. اولاً، هرگز آنطور که در نظر گرفته شده بود کار نکرد. منابع ارجاع شده با اولویت پایین دانلود شدند. این ویژگی هرگز در هیچ مرورگری غیر از Chrome اجرا نشد. پیاده سازی کروم دارای یک اشکال بود که باعث شد منابع دو بار دانلود شوند.
توسعه دهندگانی که به دنبال بهبود تجربه کاربر از طریق بارگذاری از قبل محتوا هستند، تعدادی گزینه دارند که قابل تنظیم ترین آنها ایجاد یک سرویس دهنده برای استفاده از پیش کش و API Caches است. راه حل های اضافی شامل مقادیر دیگری برای ویژگی rel
از جمله preconnect
، prefetch
، preload
، prerender
. برخی از این گزینه ها آزمایشی هستند و ممکن است به طور گسترده پشتیبانی نشوند.
نسخه ناامن TLS را حذف کنید
TL;DR : مکانیزمی را برای وادار کردن سرورها به بازگرداندن داده ها با استفاده از نسخه های کمتر یا غیر ایمن TLS حذف کنید.
قصد حذف | ردیاب Chromestatus | اشکال کروم
امنیت لایه حمل و نقل (TLS) از مکانیزمی برای مذاکره نسخهها پشتیبانی میکند که امکان معرفی نسخههای جدید TLS را بدون اختلال در سازگاری فراهم میکند. برخی از سرورها این را به گونه ای پیاده سازی کردند که مرورگرها مجبور شدند از نقاط پایانی ناامن به عنوان یک بازگشت استفاده کنند. به همین دلیل، مهاجمان میتوانند هر وبسایتی را مجبور کنند، نه فقط آنهایی که پیکربندی نادرست دارند، برای نسخههای ضعیفتر TLS مذاکره کنند.
سایت های آسیب دیده نمی توانند به ERR_SSL_FALLBACK_BEYOND_MINIMUM_VERSION
متصل شوند. مدیران باید اطمینان حاصل کنند که نرم افزار سرور آنها به روز است. اگر هنوز حل نشده است، با فروشنده نرم افزار سرور تماس بگیرید تا ببینید آیا راه حلی وجود دارد یا خیر.
KeyboardEvent.prototype.keyLocation را حذف کنید
TL;DR : نام مستعار غیر ضروری برای ویژگی Keyboard.prototype.location
را حذف کنید.
قصد حذف | ردیاب Chromestatus | اشکال کروم
این ویژگی صرفاً نام مستعار ویژگی Keyboard.prototype.location
است که امکان ابهامزدایی بین کلیدهایی را که در چندین مکان روی صفحهکلید قرار دارند، میدهد. به عنوان مثال، هر دو ویژگی به توسعه دهندگان اجازه می دهد تا بین دو کلید Enter
در یک صفحه کلید توسعه یافته تمایز قائل شوند.
کنترلکنندههای خطا و موفقیت در روشهای RTCPeerConnection مورد نیاز است
TL;DR : روشهای WebRTC RTCPeerConnection createOffer()
و createAnswer()
اکنون به یک کنترلکننده خطا و همچنین یک کنترلکننده موفقیت نیاز دارند. پیش از این، فراخوانی این روش ها تنها با یک کنترل کننده موفقیت امکان پذیر بود. این استفاده منسوخ شده است.
قصد حذف | ردیاب Chromestatus | اشکال کروم
در Chrome 49، اگر با setLocalDescription()
یا setRemoteDescription()
بدون ارائه یک کنترل کننده خطا، هشداری اضافه کردیم. آرگومان کنترل کننده خطا از Chrome 50 اجباری است.
این بخشی از باز کردن راه برای معرفی وعدهها در این روشها است، همانطور که توسط مشخصات WebRTC مورد نیاز است.
در اینجا یک مثال از نسخه ی نمایشی WebRTC RTCPeerConnection ( 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
، یک شیم که توسط پروژه WebRTC نگهداری میشود، استفاده کنید تا برنامهها را از تغییرات مشخصات و تفاوتهای پیشوندها محافظت کند.
XMLHttpRequestProgressEvent دیگر پشتیبانی نمی شود
TL;DR : رابط XMLHttpRequestProgressEvent
به همراه position
ویژگی ها و totalSize
حذف خواهد شد.
قصد حذف | ردیاب Chromestatus | اشکال کروم
این رویداد برای پشتیبانی از position
ویژگی های سازگاری Gecko و totalSize
وجود داشت. پشتیبانی از هر سه در موزیلا 22 حذف شد و این قابلیت مدتهاست که توسط 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 | اشکال کروم
در Chrome 42، یک نسخه بدون پیشوند و مبتنی بر مشخصات از برنامههای افزودنی رسانه رمزگذاریشده ارسال کردیم. این API برای کشف، انتخاب و تعامل با سیستم های مدیریت حقوق دیجیتال برای استفاده با HTMLMediaElement
استفاده می شود.
این نزدیک به یک سال پیش بود. و از آنجایی که نسخه بدون پیشوند دارای قابلیت های بیشتری نسبت به نسخه پیشوندی است، زمان حذف نسخه پیشوندی API فرا رسیده است.
پشتیبانی از ویژگی های SVGElement.offset را حذف کنید
TL;DR : ویژگی های افست برای SVGElement به نفع ویژگی های با پشتیبانی گسترده تر در HTMLElement
حذف شده اند.
قصد حذف | ردیاب Chromestatus | اشکال کروم
ویژگی های افست مدت هاست که هم توسط HTMLElement
و هم SVGElement
پشتیبانی می شود. با این حال، Gecko و Edge فقط آنها را در HTMLElement
پشتیبانی می کنند. برای بهبود سازگاری بین مرورگرها، این ویژگیها در Chrome 48 منسوخ شدند و اکنون حذف میشوند.
اگرچه ویژگی های معادل بخشی از HTMLElement
هستند، توسعه دهندگانی که به دنبال جایگزینی هستند می توانند از getBoundingClientRect()
نیز استفاده کنند.