DOMTokenList স্পেসের আরও নতুন সংস্করণগুলি একাধিক যুক্তি দেয় add()এবং remove()সেই সাথে দ্বিতীয় বারের মতো toggle()রাষ্ট্রকে বাধ্য করার অনুমতি দেয়।
লেখার সময়, ক্রোম একাধিক যুক্তিগুলি সমর্থন করে add()এবং এতে সমর্থন করে remove()তবে অন্যান্য ব্রাউজারগুলির কোনওটিই তা করে না। আইই 10 এবং নিম্ন, ফায়ারফক্স 23 এবং নিম্ন, ক্রোম 23 এবং নিম্ন এবং অন্যান্য ব্রাউজারগুলি দ্বিতীয় যুক্তিকে সমর্থন করে না toggle()।
সমর্থন প্রসারিত না হওয়া পর্যন্ত আমাকে আরও জোয়ার করতে নীচের ছোট্ট পলিফিলটি লিখেছিলাম:
(function () {
/*global DOMTokenList */
var dummy = document.createElement('div'),
dtp = DOMTokenList.prototype,
toggle = dtp.toggle,
add = dtp.add,
rem = dtp.remove;
dummy.classList.add('class1', 'class2');
// Older versions of the HTMLElement.classList spec didn't allow multiple
// arguments, easy to test for
if (!dummy.classList.contains('class2')) {
dtp.add = function () {
Array.prototype.forEach.call(arguments, add.bind(this));
};
dtp.remove = function () {
Array.prototype.forEach.call(arguments, rem.bind(this));
};
}
// Older versions of the spec didn't have a forcedState argument for
// `toggle` either, test by checking the return value after forcing
if (!dummy.classList.toggle('class1', true)) {
dtp.toggle = function (cls, forcedState) {
if (forcedState === undefined)
return toggle.call(this, cls);
(forcedState ? add : rem).call(this, cls);
return !!forcedState;
};
}
})();
ES5 কমপ্লায়েন্স সহ একটি আধুনিক ব্রাউজার এবং DOMTokenListপ্রত্যাশিত, তবে আমি এই পলিফিলটি বেশ কয়েকটি নির্দিষ্টভাবে লক্ষ্যযুক্ত পরিবেশে ব্যবহার করছি, সুতরাং এটি আমার পক্ষে দুর্দান্ত কাজ করে তবে এর জন্য লিপি উত্তোলনকারী ব্রাউজার পরিবেশে যেমন আই 8 এবং নিম্নের মধ্যে চলতে পারে এমন স্ক্রিপ্টগুলির জন্য টুইট করার প্রয়োজন হতে পারে it ।