لغو و حذف در Chrome 60

جو مدلی
Joe Medley

تقریباً در هر نسخه کروم، شاهد تعداد قابل توجهی از به‌روزرسانی‌ها و بهبودها در محصول، عملکرد آن و همچنین قابلیت‌های پلتفرم وب هستیم. این مقاله موارد منسوخ و حذف Chrome 60 را شرح می‌دهد که از 8 ژوئن در نسخه بتا است. این فهرست در هر زمان ممکن است تغییر کند.

امنیت

crypto.subtle اکنون به یک منبع امن نیاز دارد

Web Crypto API که از Chrome 37 پشتیبانی می‌شود، همیشه بر روی مبداهای غیر ایمن کار می‌کند. به دلیل سیاست دیرینه Chrome مبنی بر ترجیح منابع امن برای ویژگی‌های قدرتمند ، crypto.subtle تنها در مبداهای امن قابل مشاهده نیست.

قصد حذف | اشکال کروم

پیمایش‌های فریم بالای محتوا را به آدرس‌های اینترنتی داده حذف کنید

به دلیل ناآشنایی آنها با کاربران غیر فنی مرورگر، ما به طور فزاینده ای شاهد استفاده از این data: طرحی که در جعل و حملات فیشینگ استفاده می شود. برای جلوگیری از این امر، صفحات وب را از بارگیری data: نشانی‌های وب در کادر بالا. این برای تگ‌های <a> ، window.open ، window.location و مکانیسم‌های مشابه اعمال می‌شود. طرح data: همچنان برای منابع بارگیری شده توسط یک صفحه کار خواهد کرد.

این ویژگی در Chrome 58 منسوخ شده بود و اکنون حذف شده است.

قصد حذف | ردیاب Chromestatus | اشکال کروم

() navigator.sendBeacon را برای برخی از حباب ها به طور موقت غیرفعال کنید

تابع navigator.sendBeacon() از Chrome 39 در دسترس بوده است. همانطور که در ابتدا پیاده سازی شد، آرگومان data تابع می تواند حاوی هر حباب دلخواه باشد که نوع آن توسط CORS ایمن نشده باشد. ما بر این باوریم که این یک تهدید امنیتی بالقوه است، اگرچه هنوز کسی تلاشی برای سوء استفاده از آن نکرده است. از آنجایی که ما راه حل فوری معقولی برای آن نداریم، به طور موقت، sendBeacon() دیگر نمی تواند در حباب هایی که نوع آن ها CORS-safelisted نیست، فراخوانی شود.

اگرچه این تغییر برای Chrome 60 اعمال شد، اما از آن زمان به Chrome 59 ادغام شده است.

اشکال کروم

CSS

کاری کنید که ترکیب‌کننده‌ی نزول‌کننده‌ی سایه‌دار مانند ترکیب‌کننده‌ی نزولی رفتار کند.

ترکیب‌کننده نواده سوراخ‌کننده سایه ( >>> )، بخشی از ماژول محدوده سطح 1 CSS ، برای مطابقت با فرزندان یک عنصر اجدادی خاص حتی زمانی که در داخل یک درخت سایه ظاهر می‌شوند در نظر گرفته شده بود. این محدودیت هایی داشت. اول، طبق مشخصات ، فقط در فراخوانی های جاوا اسکریپت مانند querySelector() قابل استفاده بود و در شیوه نامه ها کار نمی کرد. مهمتر از آن، فروشندگان مرورگر نتوانستند آن را فراتر از یک سطح Shadow DOM کار کنند.

در نتیجه، combinator نسل از مشخصات مربوطه از جمله Shadow DOM v1 حذف شده است. به جای شکستن صفحات وب با حذف این انتخابگر از Chromium، ما به جای آن، نام مستعار ترکیب‌کننده نزولی سایه‌دار را به ترکیب‌کننده نسل انتخاب کرده‌ایم. رفتار اصلی در Chrome 45 منسوخ شد. رفتار جدید در Chrome 61 پیاده سازی شده است.

قصد حذف | ردیاب Chromestatus | اشکال کروم

جاوا اسکریپت

منسوخ کردن و حذف RTCPeerConnection.getStreamById()

نزدیک به دو سال پیش، getStreamById() از مشخصات WebRTC حذف شد. اکثر مرورگرهای دیگر قبلاً این مورد را از پیاده سازی خود حذف کرده اند. اگرچه اعتقاد بر این است که این تابع کمتر مورد استفاده قرار می‌گیرد، اما همچنین اعتقاد بر این است که برخی از مرورگرهای مبتنی بر Edge و WebKit به غیر از Safari که در آن‌ها getStreamById() هنوز پشتیبانی می‌شود، خطر همکاری جزئی وجود دارد. توسعه دهندگانی که به پیاده سازی جایگزین نیاز دارند می توانند کد نمونه را در Intent to Remove در زیر بیابند.

حذف در Chrome 62 است.

قصد حذف | ردیاب Chromestatus | اشکال کروم

SVGPathElement.getPathSegAtLength را منسوخ کنید

بیش از دو سال پیش، getPathSegAtLength() از مشخصات SVG حذف شد. از آنجایی که تعداد انگشت شماری از این روش در httparchive وجود دارد، این روش در Chrome 60 منسوخ شده است. انتظار می رود حذف در Chrome 62 انجام شود، که مدتی در اوایل یا اواسط اکتبر ارسال می شود.

قصد منسوخ کردن | ردیاب Chromestatus | اشکال کروم

()getContextAttributes را پشت یک پرچم حرکت دهید

تابع getContextAttributes() از سال 2013 در CanvasRenderingContext2D پشتیبانی شده است. با این حال این ویژگی بخشی از هیچ استانداردی نبوده و از آن زمان به بعد بخشی از یکی از استانداردها نبوده است. باید پشت پرچم خط فرمان --enable-experimental-canvas-features پیاده سازی می شد، اما به اشتباه اجرا نشد. در Chrome 60 این نادیده گرفته شده اصلاح شده است. اعتقاد بر این است که این تغییر بی خطر است، زیرا هیچ داده ای وجود ندارد که نشان دهد کسی از این روش استفاده می کند.

اشکال کروم

حذف Headers.prototype.getAll()

تابع Headers.prototype.getAll() طبق آخرین نسخه مشخصات Fetch حذف می شود.

قصد حذف | ردیاب Chromestatus | اشکال کروم

حذف indexedDB.webkitGetDatabaseNames()

ما این ویژگی را زمانی اضافه کردیم که Indexed DB در کروم نسبتاً جدید بود و پیشوندها بسیار رایج بود. API به طور ناهمزمان فهرستی از نام های پایگاه داده موجود را در یک مبدا برمی گرداند که به اندازه کافی معقول به نظر می رسید.

متأسفانه، طراحی ناقص است، زیرا نتایج ممکن است به محض بازگرداندن آنها منسوخ شوند، بنابراین واقعاً می توان از آن فقط برای ورود به سیستم استفاده کرد، نه منطق برنامه جدی. موضوع github به بحث های قبلی در مورد جایگزین ها، که نیاز به رویکرد متفاوتی دارد، ردیابی می کند/پیوند می دهد. در حالی که توسعه دهندگان علاقه زیادی به آن دارند، با توجه به عدم پیشرفت مرورگرهای متقابل، این مشکل توسط نویسندگان کتابخانه حل شده است.

توسعه دهندگانی که به این قابلیت نیاز دارند باید راه حل خود را توسعه دهند. کتابخانه هایی مانند Dexie.js برای مثال از یک جدول جهانی استفاده می کنند که خود پایگاه داده دیگری برای ردیابی نام پایگاه های داده است.

این ویژگی در Chrome 58 منسوخ شده بود و اکنون حذف شده است.

قصد حذف | ردیاب Chromestatus | اشکال کروم

حذف WEBKIT_KEYFRAMES_RULE و WEBKIT_KEYFRAME_RULE

ثابت های غیر استاندارد WEBKIT_KEYFRAMES_RULE و WEBKIT_KEYFRAME_RULE از قانون CSS حذف می شوند. توسعه دهندگان باید به جای آن از KEYFRAMES_RULE و KEYFRAME_RULE استفاده کنند.

قصد حذف | ردیاب Chromestatus | اشکال کروم

رابط کاربری

نیاز به اشاره کاربر برای پیش از بارگیری گفتگوها

از Chrome 60 به بعد، گفتگوی beforeunload تنها در صورتی ظاهر می‌شود که فریمی که سعی در نمایش آن دارد اشاره کاربر یا تعامل کاربر دریافت کرده باشد (یا اگر هر قاب تعبیه‌شده چنین اشاره‌ای دریافت کرده باشد). برای روشن بودن، این تغییری در ارسال رویداد beforeunload نیست. این فقط یک تغییر در نشان دادن دیالوگ است.

گفتگوی beforeunload یک کادر محاوره ای برنامه-مدال است. به این ترتیب، ذاتاً کاربر خصمانه است، به این معنی که با زیر سؤال بردن تصمیم کاربر به ناوبری کاربر پاسخ می دهد. کاربردهای مثبتی برای این ویژگی وجود دارد. به عنوان مثال، اغلب برای هشدار دادن به کاربران هنگام از دست دادن داده ها با پیمایش استفاده می شود.

در حالی که توانایی یک صفحه برای ارائه متن برای گفتگوی beforeunload چندی پیش حذف شد، گفتگوهای beforeunload به عنوان حاملی از سوء استفاده باقی می ماند. به ویژه، دیالوگ‌های beforeunload یکی از اجزای وب‌سایت‌های کلاهبرداری هستند، جایی که پخش خودکار صدا و متن تهدیدآمیز زمینه‌ای را فراهم می‌کند که در آن Chromium پیام «آیا مطمئن هستید که می‌خواهید این صفحه را ترک کنید» نگران‌کننده می‌شود.

ما می خواهیم سوزن را نخ کنیم و فقط اجازه استفاده خوب از گفتگوی beforeunload را می دهیم. استفاده های خوب از دیالوگ مواردی است که کاربر حالتی دارد که ممکن است از بین برود. اگر کاربر هرگز با صفحه تعامل نداشته باشد، کاربر نمی‌تواند حالتی را داشته باشد که ممکن است از بین برود، و بنابراین با سرکوب کردن دیالوگ در آن مورد، خطر از دست دادن اطلاعات کاربر را نداریم.