ক্রোম 54-এ API অপসারণ এবং অপসারণ

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

আনলোড হ্যান্ডলারে নেভিগেশন অক্ষম করুন

TL;DR: সমস্ত ক্রস-অরিজিন নেভিগেশন window.onunload ইভেন্ট হ্যান্ডলারে অননুমোদিত হবে যাতে HTML স্পেকের পাশাপাশি Firefox এবং Safari-এর সাথে Chrome ইনলাইন আনতে হয়।

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

Chrome-এর পূর্ববর্তী সংস্করণ window.onunload ভিতরে ক্রস-অরিজিন নেভিগেশনকে বাধাগ্রস্ত করার অনুমতি দিয়েছে। window.location.href = '#fragment' সেট করে। এইচটিএমএল স্পেক অনুসারে , আনলোড হ্যান্ডলারগুলিতে শুধুমাত্র ইন-পেজ নেভিগেশন অনুমোদিত, এবং ক্রোমের পূর্ববর্তী সংস্করণগুলিতে ন্যাভিগেট করার অন্যান্য পদ্ধতিগুলি স্পেকের প্রয়োজন অনুসারে ব্লক করা হয়েছিল। Chrome 54 থেকে শুরু করে, ফায়ারফক্স এবং Safari-এর সাথে সাথে আমাদের বিশেষত্বের সাথে সঙ্গতিপূর্ণ করতে এই ধরনের নেভিগেশনগুলিকে অননুমোদিত করা হবে।

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 এর সাথে সমস্যাগুলি সমাধান করার একমাত্র নির্বোধ উপায় হল সমর্থন সম্পূর্ণভাবে সরিয়ে দেওয়া। এই কারণেই Chrome 54-এ HTTP/0.9-এর সমর্থন সরানো হয়েছে।

initTouchEvent এর ব্যবহার সরানো হয়েছে

TL;DR : initTouchEvent স্পেক কমপ্লায়েন্স উন্নত করতে TouchEvent constructor পক্ষে বাতিল করা হয়েছে এবং Chrome 54 এ সম্পূর্ণভাবে সরানো হবে।

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

দীর্ঘদিন ধরে বিকাশকারীরা initTouchEvent API ব্যবহার করে ক্রোমে সিন্থেটিক টাচ ইভেন্ট তৈরি করতে সক্ষম হয়েছে। এগুলি প্রায়শই আপনার সাইটে কিছু UI পরীক্ষা বা স্বয়ংক্রিয় করার জন্য টাচ ইভেন্টগুলি অনুকরণ করতে ব্যবহৃত হয়। ক্রোম 49 থেকে, এই অপ্রচলিত API নিম্নলিখিত সতর্কতা প্রদর্শন করেছে।

ইভেন্ট সতর্কতা স্পর্শ করুন
TouchEvent.initTouchEvent বন্ধ করা হয়েছে এবং সেপ্টেম্বর 2016 এর কাছাকাছি M53 এ সরানো হবে। এর পরিবর্তে দয়া করে TouchEvent কনস্ট্রাক্টর ব্যবহার করুন। আরও বিস্তারিত জানার জন্য https://www.chromestatus.com/features/5730982598541312 দেখুন।

টাচ ইভেন্ট স্পেকের মধ্যে না থাকা ছাড়াও, এই পরিবর্তনটি ভাল হওয়ার অনেকগুলি কারণ রয়েছে৷ initTouchEvent এর Chrome বাস্তবায়ন Safari-এর initTouchEvent API-এর সাথে মোটেও সামঞ্জস্যপূর্ণ ছিল না এবং Android-এর Firefox-এর থেকে আলাদা ছিল। এবং অবশেষে, TouchEvent কনস্ট্রাক্টর ব্যবহার করা অনেক সহজ।

এই কারণগুলির জন্য আমরা এমন একটি API বজায় রাখার পরিবর্তে স্পেক অনুসরণ করার সিদ্ধান্ত নিয়েছি যা কেবলমাত্র অন্য বাস্তবায়নের সাথে স্পেসযুক্ত বা সামঞ্জস্যপূর্ণ নয়। একটি বিকল্প প্রয়োজন বিকাশকারীদের TouchEvent কনস্ট্রাক্টর ব্যবহার করা উচিত।

যেহেতু initTouchEvent API-এর iOS এবং Android/Chrome প্রয়োগগুলি এতটাই আলাদা ছিল, সাইটগুলিতে প্রায়শই (প্রায়শই ফায়ারফক্স ভুলে যাওয়া) এর লাইন বরাবর কোড থাকে।

    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" এর সন্ধান করে এবং Android-এ Chrome মিলবে এবং এই অবচয়কে আঘাত করবে৷ যদিও এটি এখনও সরানো যাবে না কারণ অ্যান্ড্রয়েডে কিছু সময়ের জন্য অন্যান্য ওয়েবকিট এবং পুরানো ব্লিঙ্ক ভিত্তিক ব্রাউজার থাকবে যা আপনাকে এখনও পুরানো API সমর্থন করতে হবে।

ওয়েবে TouchEvent সঠিকভাবে পরিচালনা করতে আপনার window অবজেক্টে TouchEvent এর অস্তিত্ব পরীক্ষা করে Firefox, IE Edge এবং Chrome সমর্থন করার জন্য আপনার কোড পরিবর্তন করতে হবে এবং যদি এটির একটি ইতিবাচক "দৈর্ঘ্য" থাকে (ইঙ্গিত করে এটি একটি কনস্ট্রাক্টর যা একটি যুক্তি) আপনার এটি ব্যবহার করা উচিত।

    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.keyIdentifier অ্যাট্রিবিউট সরানো হয়েছে

TL;DR: সামান্য-সমর্থিত keyboardEvent.keyIdentifier বৈশিষ্ট্য মান-ভিত্তিক KeyboardEvent.key বৈশিষ্ট্যের পক্ষে সরানো হচ্ছে।

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

keyboardEvent.keyIdentifier বৈশিষ্ট্যটি 2009 এবং 2010 সালে সংক্ষিপ্তভাবে একটি W3C স্পেসিফিকেশনের অংশ ছিল। যাইহোক, এটি শুধুমাত্র ওয়েবকিটে প্রয়োগ করা হয়েছিল।

এই বৈশিষ্ট্যটি প্রতিস্থাপন করতে চান এমন বিকাশকারীরা মান-ভিত্তিক KeyboardEvent.key বৈশিষ্ট্য বা KeyboardEvent.code বৈশিষ্ট্য ব্যবহার করতে পারেন (যেমন আমরা গত বসন্তে একটি নিবন্ধে বর্ণনা করেছি )। সাফারি ব্যতীত সমস্ত প্রধান ডেস্কটপ ব্রাউজারে সমর্থিত, পূর্বেরটির বিস্তৃত বাস্তবায়ন ভিত্তি রয়েছে। পরবর্তী বর্তমানে ক্রোম, ফায়ারফক্স এবং অপেরাতে সমর্থিত। এই বৈশিষ্ট্যটি সরানোর উদ্দেশ্য KeyboardEvent.key সম্পত্তি গ্রহণ করা। এটা সমর্থন করবে কিনা অ্যাপল থেকে কোন শব্দ; তবে KeyboardEvent.keyCode এবং KeyboardEvent.charCode বৈশিষ্ট্যগুলি এখনও সাফারিতে উপলব্ধ (কিন্তু এখনও ক্রোম থেকে সরানো হয়নি)।

MediaStream শেষ হওয়া ইভেন্ট এবং অ্যাট্রিবিউট এবং অনন্ডেড অ্যাট্রিবিউট সরান

TL;DR: ended ইভেন্ট এবং অ্যাট্রিবিউট এবং onended ইভেন্ট হ্যান্ডলারকে সরিয়ে দেওয়া হচ্ছে কারণ সেগুলি মিডিয়া ক্যাপচার এবং স্ট্রিম স্পেক থেকে সরানো হয়েছে।

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

ended ইভেন্ট বা onended ইভেন্ট হ্যান্ডলার উভয়ই প্রায় তিন বছর ধরে WebRTC স্পেকের অংশ নয়। ইভেন্ট দেখতে চান এমন ডেভেলপারদের MediaStreams পরিবর্তে MediaStreamTracks ব্যবহার করা উচিত।

SVGSVGElement.viewPort বাতিল করুন

বাস্তবায়নটি 2012 সাল থেকে Chrome-এ কাজ করেনি৷ অন্যান্য ব্রাউজারগুলিতে বৈশিষ্ট্যটি মোটেও উপস্থিত নেই এবং এটি স্পেসিফিকেশন থেকে সরানো হয়েছে৷ এসব কারণে সম্পত্তি অবমূল্যায়ন করা হচ্ছে। Chrome 55 এ অপসারণ প্রত্যাশিত।

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

SVGViewElement.viewTarget বাতিল করুন

SVGViewElement.viewTarget অ্যাট্রিবিউটটি SVG2.0 স্পেসিফিকেশনের অংশ নয় এবং এটির ব্যবহার ছোট বা অস্তিত্বহীন। এই বৈশিষ্ট্যটি ক্রোম 54-এ অপ্রত্যাশিত। Chrome 56-এ অপসারণ প্রত্যাশিত।

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

SVGZoomEvent সরান

SVGZoomEvent SVG2.0 স্পেসিফিকেশনের অংশ নয় এবং Chromium-এ কাজ করে না। তা সত্ত্বেও এটি এখনও সনাক্তযোগ্য বৈশিষ্ট্য, যা বিকাশকারীদের দ্বারা সম্ভাব্য বিভ্রান্তির দিকে পরিচালিত করে। এটা অপসারণ করা হবে.

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