تقریباً در هر نسخه کروم، شاهد تعداد قابل توجهی از بهروزرسانیها و بهبودها در محصول، عملکرد آن و همچنین قابلیتهای پلتفرم وب هستیم. این مقاله لغو و حذف Chrome 54 را شرح میدهد که از 15 سپتامبر در نسخه بتا است. این فهرست در هر زمان ممکن است تغییر کند.
ناوبری را در کنترل کننده بارگیری غیرفعال کنید
TL;DR: همه پیمایشهای متقاطع در کنترلکنندههای رویداد window.onunload
غیرمجاز خواهند بود تا کروم را با مشخصات HTML و همچنین فایرفاکس و سافاری هماهنگ کنند.
قصد حذف | ردیاب Chromestatus | اشکال کروم
نسخههای قبلی Chrome اجازه میداد پیمایش با مبدا متقابل در داخل window.onunload
قطع شود. با تنظیم window.location.href = '#fragment'
. با توجه به مشخصات HTML ، فقط پیمایش های درون صفحه در کنترل کننده های بارگیری مجاز است و در نسخه های قبلی Chrome سایر روش های پیمایش مطابق با مشخصات مسدود شده بودند. از Chrome 54، چنین پیمایشهایی غیرمجاز خواهند بود تا ما را با مشخصات و همچنین فایرفاکس و سافاری مطابقت دهند.
HTTP/0.9 منسوخ شده است
TL;DR: HTTP/0.9 منسوخ شده است. توسعه دهندگان باید به نسخه بعدی، ترجیحا HTTP/2 منتقل شوند.
قصد حذف | ردیاب Chromestatus | اشکال کروم
HTTP/0.9 سلف HTTP/1.x است . فاقد بسیاری از ویژگی های جانشینان خود است. یک نگرانی خاص برای وب مدرن عدم وجود هدر پاسخ آن است. بدون آنها، هیچ راهی برای تأیید اینکه پاسخ HTTP/0.9 واقعاً یک پاسخ HTTP/0.9 است وجود ندارد. این می تواند چندین مشکل ایجاد کند. به عنوان مثال، از جمله مشکلات دیگر عبارتند از:
- کلاینت هایی که پاسخ های خطای خاصی را به عنوان پاسخ های معتبر HTTP/0.9 تلقی می کنند.
- سرورهایی که سوکت درخواست را نمیبندند و باعث میشوند مشتریان پاسخها را بهعنوان یک GET معلق در نظر بگیرند که یا برای همیشه زنده میماند یا تا زمانی که کاربر از صفحهای که درخواست را داده است حرکت کند.
- سرورهایی که نمی توانند به مرورگر نشان دهند که یک درخواست شکست خورده است، که می تواند باعث ایجاد مشکلاتی در حافظه پنهان اکتشافی شود.
تنها راه بیخطر برای رفع مشکلات HTTP/0.9 حذف کامل پشتیبانی است. به همین دلیل است که پشتیبانی از HTTP/0.9 در Chrome 54 حذف شده است.
استفاده از initTouchEvent
حذف شده است
TL;DR : initTouchEvent
به نفع constructor
TouchEvent
منسوخ شده است تا انطباق با مشخصات را بهبود بخشد و به طور کلی در Chrome 54 حذف خواهد شد.
قصد حذف | ردیاب Chromestatus | اشکال کروم
برای مدت طولانی توسعه دهندگان قادر به ایجاد رویدادهای لمس مصنوعی در Chrome با استفاده از initTouchEvent
API بوده اند. اینها اغلب برای شبیهسازی رویدادهای لمسی برای آزمایش یا خودکار کردن برخی از رابطهای کاربری در سایت شما استفاده میشوند. از Chrome 49، این API منسوخ شده هشدار زیر را نشان میدهد.
جدای از اینکه در مشخصات Touch Events قرار نگرفتهایم، دلایل متعددی برای خوب بودن این تغییر وجود دارد. پیادهسازی Chrome از initTouchEvent
به هیچ وجه با API initTouchEvent
Safari سازگار نبود و با Firefox در اندروید متفاوت بود. و در نهایت، استفاده از سازنده TouchEvent
بسیار ساده تر است.
به این دلایل، ما تصمیم گرفتیم به جای حفظ یک API که نه مشخص است و نه با تنها پیاده سازی دیگر سازگار است، از مشخصات پیروی کنیم. توسعه دهندگانی که به جایگزینی نیاز دارند باید از سازنده TouchEvent
استفاده کنند.
از آنجایی که پیادهسازیهای iOS و Android/Chrome در initTouchEvent
API بسیار متفاوت بودند، سایتها اغلب کدهایی در امتداد خطوط (که اغلب فایرفاکس را فراموش میکنند) دارند.
var event = document.createEvent('TouchEvent');
if(ua === 'Android') {
event.initTouchEvent(touchItem, touchItem, touchItem, "touchstart", window,
300, 300, 200, 200, false, false, false, false);
} else {
event.initTouchEvent("touchstart", false, false, window, 0, 300, 300, 200,
200, false, false, false, false, touches, targetTouches, changedTouches, 0, 0);
}
document.body.dispatchEvent(touchEvent);
این بد است زیرا به دنبال "Android" در User-Agent می شود و Chrome در Android مطابقت دارد و به این منسوخ شدن ضربه می زند. البته هنوز نمیتوان آن را حذف کرد، زیرا برای مدتی دیگر مرورگرهای WebKit و Blink قدیمیتر در اندروید وجود خواهند داشت که همچنان باید از API قدیمیتر پشتیبانی کنید.
برای مدیریت صحیح TouchEvent
در وب، باید کد خود را برای پشتیبانی از فایرفاکس، IE Edge و Chrome با بررسی وجود TouchEvent
در شی window
و اینکه آیا "طول" مثبت دارد تغییر دهید (که نشان می دهد سازنده ای است که طول می کشد. استدلال) شما باید از آن استفاده کنید.
if('TouchEvent' in window && TouchEvent.length > 0) {
var touch = new Touch({
identifier: 42,
target: document.body,
clientX: 200,
clientY: 200,
screenX: 300,
screenY: 300,
pageX: 200,
pageY: 200,
radiusX: 5,
radiusY: 5
});
event = new TouchEvent("touchstart", {
cancelable: true,
bubbles: true,
touches: [touch],
targetTouches: [touch],
changedTouches: [touch]
});
}
else {
event = document.createEvent('TouchEvent');
if(ua === 'Android') {
event.initTouchEvent(touchItem, touchItem, touchItem, "touchstart", window,
300, 300, 200, 200, false, false, false, false);
} else {
event.initTouchEvent("touchstart", false, false, window, 0, 300, 300, 200,
200, false, false, false, false, touches, targetTouches,
changedTouches, 0, 0);
}
}
document.body.dispatchEvent(touchEvent);
keyboardEvent.KeyDidentifier حذف شده
TL;DR: ویژگی keyboardEvent.keyIdentifier
که کمی پشتیبانی می شود به نفع ویژگی KeyboardEvent.key
مبتنی بر استاندارد حذف می شود.
قصد حذف | ردیاب Chromestatus | اشکال کروم
ویژگی keyboardEvent.keyIdentifier
به طور خلاصه بخشی از مشخصات W3C در سالهای 2009 و 2010 بود. با این حال، این ویژگی تنها در WebKit پیادهسازی شد.
برنامهنویسانی که نیاز به جایگزینی این ویژگی دارند، میتوانند از ویژگی KeyboardEvent.key
مبتنی بر استاندارد یا ویژگی KeyboardEvent.code
(همانطور که در مقالهای که بهار گذشته انجام دادیم توضیح داده شد) استفاده کنند. اولی گسترده ترین پایه پیاده سازی را دارد و در تمام مرورگرهای دسکتاپ اصلی به جز سافاری پشتیبانی می شود. نسخه بعدی در حال حاضر در کروم، فایرفاکس و اپرا پشتیبانی می شود. هدف از حذف این ویژگی، پذیرش ویژگی KeyboardEvent.key
است. هیچ سخنی از اپل مبنی بر اینکه آیا از این پشتیبانی خواهد کرد یا خیر وجود ندارد. اما ویژگیهای KeyboardEvent.keyCode
و KeyboardEvent.charCode
منسوخ شده (اما هنوز از Chrome حذف نشدهاند) همچنان در Safari در دسترس هستند.
رویداد و ویژگی پایان یافته MediaStream و ویژگی یکپارچه را حذف کنید
TL;DR: رویداد و ویژگی ended
و کنترل کننده رویداد onended
حذف می شوند زیرا از مشخصات ضبط رسانه و جریان ها حذف شده اند.
قصد حذف | ردیاب Chromestatus | اشکال کروم
نه رویداد ended
و نه کنترل کننده رویداد onended
برای حدود سه سال بخشی از مشخصات WebRTC نبوده اند. توسعه دهندگانی که می خواهند رویدادها را تماشا کنند باید از MediaStreamTracks
به جای MediaStreams
استفاده کنند.
svgsvgelement.viewport
این پیاده سازی از سال 2012 در کروم کار نمی کند. این ویژگی به هیچ وجه در مرورگرهای دیگر وجود ندارد و از مشخصات حذف شده است. به این دلایل ملک در حال منسوخ شدن است. حذف در Chrome 55 پیش بینی شده است.
قصد حذف | ردیاب Chromestatus | اشکال کروم
svgviewelement.viewtarget
ویژگی SVGViewElement.viewTarget
بخشی از مشخصات SVG2.0 نیست و میزان استفاده از آن کم است یا وجود ندارد. این ویژگی در Chrome 54 منسوخ شده است. در Chrome 56 حذف پیش بینی می شود.
قصد حذف | ردیاب Chromestatus | اشکال کروم
SVGZoomEvent را حذف کنید
SVGZoomEvent
بخشی از مشخصات SVG2.0 نیست و در Chromium کار نمی کند. با وجود این، هنوز ویژگی قابل تشخیص است، که منجر به سردرگمی احتمالی توسط توسعه دهندگان می شود. حذف خواهد شد.