ইভেন্ট.লেয়ারএক্স এবং ইভেন্ট.লেয়ারওয়াইয়ের সাথে ওয়েবকিট সমস্যা


507

আমি কেবল লক্ষ্য করেছি যে আমি ক্রোমের সর্বশেষ (ক্যানারি) বিল্ডে প্রচুর অবহেলিত সতর্কতা পেয়েছি।

ইভেন্ট.লেয়ারএক্স এবং ইভেন্ট.লেয়ারওয়্যারটি ওয়েবকিটে ভাঙ্গা এবং অবচয় করা হয়েছে। অদূর ভবিষ্যতে এগুলি ইঞ্জিন থেকে সরানো হবে।

দেখে মনে হচ্ছে jQuery জিনিসটিকে স্ক্রু করছে।

আমি ব্যবহার করছি: jquery-1.6.1.min.js

এটি কী সর্বশেষতম jQuery সংস্করণে আপগ্রেড করতে সহায়তা করবে বা এটি এখনও ঠিক হয়নি বা এটি কোনও ক্রোম বাগ বা এটি অন্য কিছু।

পুনশ্চ

আমি আপনাকে কোডটি প্রদর্শন করতে পারছি না কারণ আমি মনে করি এটি একটি সাধারণ ত্রুটি, তবে আমি সন্দেহ করি সতর্কতা নষ্ট হয়ে গেছে যখন আমি কোনও জিকুয়েরি অবজেক্ট অ্যাক্সেস করার চেষ্টা করি বা যখন জিক্যুয়ারি স্তর / লেয়ারওয়্যারটি অ্যাক্সেস করার চেষ্টা করে (তবে আমি নিশ্চিত যে বিষয়টি বিবেচনা করে কেসটি হয়েছে) ত্রুটি: পি)।

jQuery সম্ভবত jQuery অবজেক্টে এই বৈশিষ্ট্যগুলি অনুলিপি করে।

তাই ...

কি হচ্ছে?

সম্পাদনা

jQuery 1.7 এই সমস্যাটি সমাধান করেছে।

তাদের ব্লগে আরও পড়ুন , এখানে


1
ঠিক আজ এটিও লক্ষ্য করেছেন।
দুসদা

5
jQuery 1.7 এখনও সতর্কতা এখনও স্থির করা হয়নি ছোঁড়া .......
কৃষ

3
@ স্টুয়ার্ট.স্ক্লিনার আমি জানি না আপনি পিএইচপি তেও কোড করেছেন কিনা, তবে আপনি যদি নিশ্চিত হন তবে আপনি @ত্রুটিগুলি দমন করতেও ব্যবহার করেছেন ।
PeeHaa

1
এর মধ্যে কোনও অন্তর্বর্তীকালীন ত্রুটি না থাকলে ক্রোম কেবল একইরকম ত্রুটিগুলি গ্রুপ করে। সুতরাং সমস্যাটি সত্যই, এটি ডিবাগিংয়ের জন্য কনসোলটি ব্যবহার করা আরও জটিল করে তোলে। এটি বিরক্তিকর, তবে এখনও আমি মনে করি না যে কোনও jQuery কার্যকারিতা আসলে নষ্ট হয়েছে
carpii

2
উত্তরসূরিদের জন্য এটি লক্ষণীয়, ওয়েবকিট ( বাগ 86264 ) অবমূল্যায়নের তাদের সিদ্ধান্ত থেকে পিছনে ফিরেছেlayerX এবং layerY, যতক্ষণ না তারা এটিকে আরও যত্নবান বিবেচনা করে। এটিও লক্ষণীয় যে আইই সম্প্রতি যুক্ত করেছে layerX এবং layerYএটি সংস্করণ 9 পর্যন্ত না পাওয়ার পরেও আমার ধারণা এই বৈশিষ্ট্যগুলি চলে যাচ্ছে না - কমপক্ষে উপযুক্ত ডাব্লু 3 সি প্রতিস্থাপন না হওয়া পর্যন্ত, যা শীঘ্রই হবে না। সতর্কতাগুলি ওয়েবকিটের সাম্প্রতিক সংস্করণগুলিতে চলে গেছে।
নাথন ওয়াল

উত্তর:


463

কি হচ্ছে!?

"jQuery সম্ভবত jQuery অবজেক্টে সেই বৈশিষ্ট্যগুলি অনুলিপি করে।" আপনি হুবহু সঠিক, তাই মনে হচ্ছে আপনি ইতিমধ্যে জানেন! :)

আশা করি jQuery তাদের কোডটি স্পর্শ করা বন্ধ করার জন্য আপডেট করবে তবে একই সাথে ওয়েবকিট কোনও ইভেন্টে অবমূল্যায়ন সতর্কতা লগ করার চেয়ে ভাল জানত (কমপক্ষে আমার মতে)। একটি মাউসমেভ হ্যান্ডলার এবং আপনার কনসোল বিস্ফোরিত হয়। :)

এখানে একটি সাম্প্রতিক jQuery টিকিট: http://bugs.jquery.com/ticket/10531

আপডেট: আপনি এখন jQuery 1.7 এ আপগ্রেড করার পরে এটি ঠিক করা হয়েছে।

দয়া করে নোট করুন যে jQuery আপগ্রেড করা যদি সমস্যাটি সমাধান না করে তবে জ্যাক তার উত্তরে যেমন বলেছিল তেমন ব্যবহারের এক্সটেনশন / প্লাগইনগুলির সাথে কিছু করতে পারে


8
@ JQuery 1.7 এ নিবন্ধ টিকিট অনুযায়ী সরিয়ে ফেলা হবে
সেন্সর

7
আমি তাদের এখনও জেকিউ 1.7 এ দেখি
ভিক্টর এস

22
এবং আমি এখনও তাদের জিকিউ 1.7.1 এ দেখি। তাই ঠিক মনে হচ্ছে না।
পাপার্প্পা

3
আমি 1.7.1 এর সাথে একমত, সতর্কতা অদৃশ্য! ধন্যবাদ।
জে কে_

3
আমি আমার সমস্ত এক্সটেনশন অক্ষম করেছি এবং আমি এখনও এই সতর্কতাগুলি 1.7.2 দিয়ে পেয়েছি
বাসজিরো

74

http://jsperf.com/removing-event-props/2

অস্থায়ী ফিক্সটি হল আপনি jQuery এর মাধ্যমে কোনও ইভেন্ট বাঁধাই করার আগে এই কোডটি চালানো:

(function(){
    // remove layerX and layerY
    var all = $.event.props,
        len = all.length,
        res = [];
    while (len--) {
      var el = all[len];
      if (el != 'layerX' && el != 'layerY') res.push(el);
    }
    $.event.props = res;
}());

হালনাগাদ

ইভেন্টের প্রপসগুলি সরিয়ে ফেলার জন্য দ্রুততম উপায় কী তা জানতে সর্বশেষতম পারফরম্যান্স পরীক্ষাগুলি দেখুন ।


ভাল লিঙ্ক! আমি পারফেক্ট পরীক্ষাটি পরিবর্তন করেছি। একটি রেজেক্সের ব্যবহার দেখে মনে হয়েছিল কিছু পরীক্ষা ধীর হয়ে গেছে? আমি যদি কিছু ভঙ্গ না করি তবে সমস্ত পরীক্ষায় === বা! == ব্যবহার করে + সেরা বিকল্পটি মুছতে পারে বলে মনে হয়। jsperf.com/removing-event-props/3
অ্যাডাম এ

অতিরিক্ত কোড ডাউনলোড এবং চালানোর ওভারহেড ছাড়াও? নাঃ।
ডেভিড মুরডোক

যখন কেবল একবার চালানো হয় তখন বিভিন্ন সমাধান বেঞ্চমার্ক করার কী অর্থ? পারফরম্যান্সের তুলনায় সরলতা এবং কম কোড হ'ল এই ক্ষেত্রে মূল্য দেওয়া উচিত। যদি আমরা উভয়ই চাই, তবে কেবল অ্যারের সাথে লেয়ারএক্স / লেয়ারওয়াইয়ের মানগুলি কেন প্রতিস্থাপন করবেন না? পরীক্ষা করে দেখুন জন্য perf বেঞ্চ (যা ব্যাপার যাহাই হউক না কেন না)।
মেকওয়াল

28

এর সংক্ষিপ্ততম সমাধানটি হ'ল এই ওয়ান-লাইনার:

$.event.props = $.event.props.join('|').replace('layerX|layerY|', '').split('|');

1
@ লুইস আমি প্রোটোটাইপ.জেএস এর সাথে পরিচিত নই তাই আমি খুব বেশি সাহায্য হতে পারি না, তবে আমার ধারণা এই সমাধানটি এর সাথে খুব মিল থাকতে হবে। একটি প্রশ্ন পোস্ট করুন এবং আশা করুন যে কেউ জানে :)
mekwall

21

এই বার্তাগুলির বিশাল পরিমাণ (জিমেইল ব্যবহার করার সময় আমি তাদের মধ্যে মাত্র 80000 পেয়েছি) প্রকৃতপক্ষে ক্রোমের একটি বাগ।

আপনার সমস্যাটি ক্রোমিয়ামে তারকাচিহ্নিত করা উচিত ।


1
এফওয়াইআই, ইস্যুটি প্রায় এক বছরের জন্য স্থির করা হয়েছে (যেমন সতর্কতাটি ওয়েবকিট থেকে সরানো হয়েছে)। আপনি যদি এখনও এই সমস্যাটি দেখতে পান তবে আপনার ব্রাউজারটি আপগ্রেড করার কথা বিবেচনা করুন।
törzsmókus

14

এটি ক্রোম এক্সটেনশনের কারণেও হতে পারে, সুতরাং jQuery আপডেট কাজ না করে তা পরীক্ষা করে দেখুন।


5

Eevent.prop এর মূল উদাহরণটি (যা অ্যারে হতে পারে বা নাও হতে পারে) প্রতিস্থাপন না করেই এখানে আরেকটি লাইন ফিক্স দেওয়া আছে :-)

$.each(["layerX","layerY"], function(i,v) { if((i=p.indexOf(v)) > -1) $.fn.splice.call($.event.props,i,1) })

5

যে কোনও ইভেন্ট বলার পরে আমি এটি ব্যবহার করেছি:

$.event.props.splice($.event.props.indexOf("layerY"),1);
$.event.props.splice($.event.props.indexOf("layerX"),1);

এটি আমার পক্ষে কাজ করেছে, যেহেতু আমার কোডটিতে এই প্যাচটি তৈরি করেছি সেহেতু আমার কাছে কোনও সতর্কতা বার্তা নেই।


4

পাশাপাশি অন্যান্য উত্তরের তালিকাভুক্ত কনফিগারেশন সংক্রান্ত সমস্যাগুলির সাথে, আপনার নিজের কোডে একটি সাধারণ ত্রুটি দ্বারা এই ত্রুটিটি ট্রিগার করা যেতে পারে: একটি জিকুয়ের আইডি নির্বাচক থেকে '#' ভুলে যাওয়া।

আমার মতো কোড ছিল

$('datenotset_2341').click(function(){
 ....etc....
});

("ডেটনোটসেট" এর সামনে # টি মিস করছি)

পাশাপাশি (স্পষ্টতই) কাজ করতে ব্যর্থ হওয়ায় এটি ক্রোমে এই ত্রুটি বার্তাকে ট্রিগার করেছে।


3

আমি আমার নিজস্ব কোডে এই সমস্যাটিতে দৌড়েছি। দেখা যাচ্ছে যে কোনও ডিবাগিং / পরিদর্শন সরঞ্জামের অংশ হিসাবে আমি কোনও ইভেন্ট অবজেক্টের সমস্ত বৈশিষ্ট্যের উপরে পুনরাবৃত্তি করছিলাম। এই বিশেষ উদাহরণে আমি jQuery এর ex .পরিবর্তন পরিদর্শন করার জন্য অবজেক্টটি ক্লোন করার জন্য ব্যবহার করছিলাম, তবে আমি বিশ্বাস করি যে বিভিন্ন সরঞ্জামদণ্ডের কোনও মানক পুনরাবৃত্তি কৌশলও সতর্কতাটিকে ট্রিগার করেছিল।

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.