ক্রোম 60-এ অবচয় এবং অপসারণ

জো মেডলি
Joe Medley

Chrome-এর প্রায় প্রতিটি সংস্করণে, আমরা পণ্য, এর কার্যকারিতা এবং ওয়েব প্ল্যাটফর্মের ক্ষমতার উল্লেখযোগ্য সংখ্যক আপডেট এবং উন্নতি দেখতে পাই। এই নিবন্ধটি Chrome 60-এ অবচয় এবং অপসারণের বর্ণনা দেয়, যা 8 জুন পর্যন্ত বিটাতে রয়েছে। এই তালিকাটি যে কোনো সময় পরিবর্তন হতে পারে।

নিরাপত্তা

crypto.subtle-এর এখন একটি নিরাপদ উৎস প্রয়োজন

ওয়েব ক্রিপ্টো API যা Chrome 37 থেকে সমর্থিত হয়েছে সর্বদা অ-সুরক্ষিত উত্সগুলিতে কাজ করে৷ শক্তিশালী বৈশিষ্ট্যগুলির জন্য নিরাপদ উত্সকে অগ্রাধিকার দেওয়ার জন্য Chrome-এর দীর্ঘস্থায়ী নীতির কারণে, crypto.subtle শুধুমাত্র সুরক্ষিত উত্সগুলিতে দৃশ্যমান নয়৷

অপসারণ করার অভিপ্রায় | ক্রোমিয়াম বাগ

ডেটা URL-এ কন্টেন্ট-সূচনা শীর্ষ ফ্রেম নেভিগেশন সরান

অ-প্রযুক্তিগত ব্রাউজার ব্যবহারকারীদের কাছে তাদের অপরিচিততার কারণে, আমরা ক্রমবর্ধমানভাবে data: স্পুফিং এবং ফিশিং আক্রমণে স্কিম ব্যবহার করা হচ্ছে। এটি প্রতিরোধ করার জন্য, আমরা ওয়েব পৃষ্ঠাগুলিকে data: উপরের ফ্রেমের URLগুলি৷ এটি <a> ট্যাগ, window.open , window.location এবং অনুরূপ পদ্ধতিতে প্রযোজ্য। data: স্কিম এখনও একটি পৃষ্ঠা দ্বারা লোড করা সংস্থানগুলির জন্য কাজ করবে৷

এই বৈশিষ্ট্যটি Chrome 58-এ অবচয় ছিল এবং এখন সরানো হয়েছে।

অপসারণ করার অভিপ্রায় | Chromestatus ট্র্যাকার | ক্রোমিয়াম বাগ

কিছু ব্লবের জন্য অস্থায়ীভাবে navigator.sendBeacon() অক্ষম করুন৷

navigator.sendBeacon() ফাংশনটি Chrome 39 সাল থেকে উপলব্ধ। যেমনটি মূলত প্রয়োগ করা হয়েছে, ফাংশনের data আর্গুমেন্টে যে কোনো নির্বিচারে ব্লব থাকতে পারে যার ধরন CORS-নিরাপদ নয়। আমরা বিশ্বাস করি এটি একটি সম্ভাব্য নিরাপত্তা হুমকি, যদিও কেউ এখনও এটিকে কাজে লাগানোর চেষ্টা করেনি। যেহেতু আমাদের কাছে এটির জন্য একটি যুক্তিসঙ্গত তাত্ক্ষণিক সমাধান নেই, অস্থায়ীভাবে, sendBeacon() ব্লবগুলিতে আর আহ্বানযোগ্য হতে পারে না যার প্রকার CORS-নিরাপদ তালিকাভুক্ত নয়৷

যদিও এই পরিবর্তনটি Chrome 60-এর জন্য প্রয়োগ করা হয়েছিল, তারপর থেকে এটি আবার Chrome 59-এ মার্জ করা হয়েছে।

ক্রোমিয়াম বাগ

সিএসএস

শ্যাডো-পিয়ার্সিং ডিসেন্ডেন্ট কম্বিনেটরকে ডিসেন্ডেন্ট কম্বিনেটরের মতো আচরণ করুন

শ্যাডো-পিয়ার্সিং ডিসেন্ডেন্ট কম্বিনেটর ( >>> ), CSS স্কোপিং মডিউল লেভেল 1- এর অংশ, একটি নির্দিষ্ট পূর্বপুরুষ উপাদানের বাচ্চাদের সাথে মেলানোর উদ্দেশ্য ছিল এমনকি যখন তারা ছায়া গাছের ভিতরে উপস্থিত হয়। এর কিছু সীমাবদ্ধতা ছিল। প্রথমত, স্পেক অনুযায়ী , এটি শুধুমাত্র জাভাস্ক্রিপ্ট কলে ব্যবহার করা যেতে পারে যেমন querySelector() এবং স্টাইলশীটে কাজ করে না। আরও গুরুত্বপূর্ণ, ব্রাউজার বিক্রেতারা এটিকে ছায়া DOM-এর এক স্তরের বাইরে কাজ করতে অক্ষম ছিল।

ফলস্বরূপ, Descendant combinator কে Shadow DOM v1 সহ প্রাসঙ্গিক চশমা থেকে সরানো হয়েছে। ক্রোমিয়াম থেকে এই নির্বাচককে সরিয়ে দিয়ে ওয়েব পৃষ্ঠাগুলি ভাঙার পরিবর্তে, আমরা ছায়া-ভেদকারী বংশোদ্ভূত সংযোজক থেকে বংশধর কম্বিনেটর উপনাম বেছে নিয়েছি। ক্রোম 45-এ মূল আচরণটি অবমূল্যায়িত করা হয়েছিল। নতুন আচরণ Chrome 61 এ প্রয়োগ করা হয়েছে।

অপসারণ করার অভিপ্রায় | Chromestatus ট্র্যাকার | ক্রোমিয়াম বাগ

জাভাস্ক্রিপ্ট

RTCPeerConnection.getStreamById() বাতিল করুন এবং সরান

প্রায় দুই বছর আগে, getStreamById() WebRTC স্পেক থেকে সরানো হয়েছে। বেশিরভাগ অন্যান্য ব্রাউজার ইতিমধ্যে তাদের বাস্তবায়ন থেকে এটি সরিয়ে দিয়েছে। যদিও এই ফাংশনটি অল্প-ব্যবহৃত বলে মনে করা হয়, তবে এটিও বিশ্বাস করা হয় যে সাফারি ছাড়া এজ এবং ওয়েবকিট-ভিত্তিক ব্রাউজারগুলির সাথে কিছু ছোট আন্তঃঅপারেবিলিটি ঝুঁকি রয়েছে যেখানে getStreamById() এখনও সমর্থিত। একটি বিকল্প বাস্তবায়নের প্রয়োজন এমন ডেভেলপাররা নীচের ইন্টেন্ট টু রিমুভ-এ উদাহরণ কোড খুঁজে পেতে পারেন।

অপসারণ Chrome 62 এ রয়েছে।

অপসারণ করার অভিপ্রায় | Chromestatus ট্র্যাকার | ক্রোমিয়াম বাগ

SVGPathElement.getPathSegAtLength বাতিল করুন

দুই বছরেরও বেশি আগে, getPathSegAtLength() SVG স্পেক থেকে সরানো হয়েছিল। যেহেতু http সংরক্ষণাগারে এই পদ্ধতির জন্য শুধুমাত্র কয়েকটি হিট রয়েছে, তাই এটি Chrome 60-এ অবচয়িত হচ্ছে। অপসারণ Chrome 62-এ হবে বলে আশা করা হচ্ছে, যা অক্টোবরের শুরুতে বা মাঝামাঝি সময়ে পাঠানো হবে।

অবমূল্যায়ন করার অভিপ্রায় | Chromestatus ট্র্যাকার | ক্রোমিয়াম বাগ

একটি পতাকার পিছনে getContextAttributes() সরান

getContextAttributes() ফাংশনটি 2013 সাল থেকে CanvasRenderingContext2D তে সমর্থিত। তবে বৈশিষ্ট্যটি কোনো স্ট্যান্ডার্ডের অংশ ছিল না এবং সেই সময় থেকে একটির অংশ হয়ে ওঠেনি। এটি --enable-experimental-canvas-features কমান্ড লাইন পতাকার পিছনে প্রয়োগ করা উচিত ছিল, কিন্তু ভুলবশত তা হয়নি। Chrome 60-এ এই তত্ত্বাবধান সংশোধন করা হয়েছে। এটি বিশ্বাস করা হয় যে এই পরিবর্তনটি নিরাপদ, যেহেতু কেউ এই পদ্ধতিটি ব্যবহার করছে এমন কোনও ডেটা নেই৷

ক্রোমিয়াম বাগ

Headers.prototype.getAll() সরান

Headers.prototype.getAll() ফাংশনটি ফেচ স্পেসিফিকেশনের সর্বশেষ সংস্করণ অনুসারে সরানো হচ্ছে।

অপসারণ করার অভিপ্রায় | Chromestatus ট্র্যাকার | ক্রোমিয়াম বাগ

indexedDB.webkitGetDatabaseNames() সরান

আমরা এই বৈশিষ্ট্যটি যুক্ত করেছি যখন ক্রোমে ইনডেক্সড ডিবি তুলনামূলকভাবে নতুন ছিল এবং প্রিফিক্সিং সমস্ত রাগ ছিল। এপিআই অ্যাসিঙ্ক্রোনাসভাবে একটি মূলে বিদ্যমান ডাটাবেসের নামের একটি তালিকা প্রদান করে, যা যথেষ্ট বুদ্ধিমান বলে মনে হয়েছিল।

দুর্ভাগ্যবশত, নকশাটি ত্রুটিপূর্ণ, যার ফলে ফলাফলগুলি ফিরে আসার সাথে সাথেই অপ্রচলিত হতে পারে, তাই এটি সত্যিই শুধুমাত্র লগিংয়ের জন্য ব্যবহার করা যেতে পারে, গুরুতর প্রয়োগের যুক্তি নয়। গিথুব ইস্যু বিকল্পগুলির উপর পূর্ববর্তী আলোচনার ট্র্যাক/লিঙ্ক, যার জন্য একটি ভিন্ন পদ্ধতির প্রয়োজন হবে। যদিও বিকাশকারীদের দ্বারা অন-অফ আগ্রহ রয়েছে, ক্রস-ব্রাউজার অগ্রগতির অভাবের কারণে লাইব্রেরি লেখকদের দ্বারা সমস্যাটি সমাধান করা হয়েছে।

এই কার্যকারিতা প্রয়োজন ডেভেলপারদের তাদের নিজস্ব সমাধান বিকাশ করতে হবে. উদাহরণ স্বরূপ 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 ডায়ালগের ভাল ব্যবহারের অনুমতি দিতে চাই। ডায়ালগের ভালো ব্যবহার হল সেইসব যেখানে ব্যবহারকারীর এমন তথ্য আছে যা হারিয়ে যেতে পারে। যদি ব্যবহারকারী কখনোই পৃষ্ঠার সাথে ইন্টারঅ্যাক্ট না করে, তাহলে ব্যবহারকারীর এমন কোনো অবস্থা থাকতে পারে না যা হারিয়ে যেতে পারে, এবং তাই আমরা সেই ক্ষেত্রে ডায়ালগটি দমন করে ব্যবহারকারীর ডেটা হারানোর ঝুঁকি নেই।