কোনও ডিওএম এলিমেন্টের জন্য কোনও ইভেন্টের সাথে কি ফাংশন / কোড যুক্ত রয়েছে তা দেখার কোনও উপায় আছে কি? ফায়ারব্যাগ বা অন্য কোনও সরঞ্জাম ব্যবহার করা।
কোনও ডিওএম এলিমেন্টের জন্য কোনও ইভেন্টের সাথে কি ফাংশন / কোড যুক্ত রয়েছে তা দেখার কোনও উপায় আছে কি? ফায়ারব্যাগ বা অন্য কোনও সরঞ্জাম ব্যবহার করা।
উত্তর:
Traditionalতিহ্যবাহী element.onclick= handler
বা এইচটিএমএল ব্যবহার করে সংযুক্ত ইভেন্ট হ্যান্ডলারগুলি স্ক্রিপ্ট বা ইন-ডিবাগার থেকে সম্পত্তি থেকে <element onclick="handler">
তুচ্ছভাবে পুনরুদ্ধার করা যেতে পারে element.onclick
।
ডিওএম স্তর 2 ইভেন্ট ইভেন্টগুলি addEventListener
এবং আইই এর সাহায্যে সংযুক্ত ইভেন্ট হ্যান্ডলারগুলি attachEvent
বর্তমানে স্ক্রিপ্ট থেকে মোটেও পুনরুদ্ধার করা যায় না। DOM স্তর 3 একবার element.eventListenerList
সমস্ত শ্রোতাদের পাওয়ার প্রস্তাব করেছিল, তবে এটি চূড়ান্ত স্পেসিফিকেশনে পরিণত করবে কিনা তা অস্পষ্ট। আজ কোনও ব্রাউজারে কোনও প্রয়োগ নেই।
ব্রাউজার এক্সটেনশন হিসাবে একটি ডিবাগিং সরঞ্জাম এই ধরণের শ্রোতাদের অ্যাক্সেস পেতে পারে তবে আমি আসলে কোনটিই করি তা সম্পর্কে আমি অবগত নই।
কিছু জেএস ফ্রেমওয়ার্কগুলি ইভেন্টের রেকর্ড পর্যায়ে রেখেছিল যেগুলি তারা যা করেছে তা কাজ করে। কয়েকটি জনপ্রিয় ফ্রেমওয়ার্কের মাধ্যমে নিবন্ধিত শ্রোতাদের আবিষ্কার করতে ভিজ্যুয়াল ইভেন্টটি এই পদ্ধতির প্রয়োজন।
গুগল ক্রোম বিকাশকারী সরঞ্জাম উপাদান প্যানেল 2010 থেকে মাঝামাঝি 2011 এবং Chrome পরীক্ষাকারীদের চ্যানেলে রিলিজ Chrome এর রিলিজ যেহেতু এই ছিল।
এছাড়াও, ঘটনা নির্বাচিত নোড দেখানো শ্রোতাকে হয় ক্রমে তারা বহিস্কার করা হয় ধরে রাখা এবং সাড়া জাগানো পর্যায়ক্রমে মাধ্যমে।
হিট command+ + option+ + iএবং Mac OSX এ Ctrl+ + Shift+ + iWindows এ Chrome এ এই ফায়ার আপ
window
মতো বস্তুর উপরের ঘটনাগুলিও কি পরীক্ষা করা সম্ভব message
?
Chrome জাভ সরঞ্জামগুলি জাভাস্ক্রিপ্ট ইভেন্টগুলি পর্যবেক্ষণের জন্য কিছু নতুন সরঞ্জাম ঘোষণা করেছে ।
টি এল; ডিআর
একটি নির্দিষ্ট ধরণের ইভেন্ট ব্যবহার করে শুনুন
monitorEvents()
।
unmonitorEvents()
শুনতে বন্ধ করতে ব্যবহার করুন ।ডিওএম উপাদান ব্যবহার করে শ্রোতাদের ব্যবহার করুন
getEventListeners()
।ইভেন্ট শ্রোতাদের তথ্য পেতে ইভেন্ট শ্রোতা পরিদর্শক প্যানেলটি ব্যবহার করুন।
কাস্টম ইভেন্টগুলি সন্ধান করা
আমার প্রয়োজনের জন্য, তৃতীয় পক্ষের কোডে কাস্টম জেএস ইভেন্টগুলি আবিষ্কার করে, নিম্নলিখিত দুটি সংস্করণ getEventListeners()
আশ্চর্যজনকভাবে সহায়ক ছিল;
getEventListeners(window)
getEventListeners(document)
আপনি যদি জানেন যে ইভেন্টের শ্রোতার সাথে ডিওএম নোডটি কী সংযুক্ত ছিল আপনি এটির পরিবর্তে window
বা পাস করে দিতে পারেন document
।
জ্ঞাত ইভেন্ট
আপনি কি জানেন ইভেন্টে যেমন নিরীক্ষণ করতে চান click
ডকুমেন্ট শরীরের উপর আপনাকে নিম্নলিখিত ব্যবহার করতে পারে: monitorEvents(document.body, 'click');
।
আপনার এখন document.body
কনসোলে লগ ইন থাকা সমস্ত ক্লিক ইভেন্টগুলি দেখা শুরু করা উচিত ।
আপনি সরাসরি সংযুক্ত ইভেন্টগুলি দেখতে পারেন (এলিমেন্ট.অনলিক = হ্যান্ডলার) ডিওএম দেখে। আপনি ফায়ারকোয়ারির সাথে ফায়ারব্যাগ ব্যবহার করে ফায়ারফক্সে jQuery- সংযুক্ত ইভেন্টগুলি দেখতে পারেন। ফায়ারবাগ ব্যবহার করে অ্যাডএভেন্টলিস্টনার-যুক্ত ইভেন্টগুলি দেখার কোনও উপায় বলে মনে হচ্ছে না। তবে আপনি Chrome ডিবাগারটি ব্যবহার করে তাদের Chrome এ দেখতে পারেন।
আপনি আপনার পৃষ্ঠায় বেশ কয়েকটি বড় জাভাস্ক্রিপ্ট লাইব্রেরি থেকে বর্তমানে সংযুক্ত সমস্ত ইভেন্ট হ্যান্ডলারগুলি পরিদর্শন করতে অ্যালান জার্ডিনের দ্বারা ভিজ্যুয়াল ইভেন্ট ব্যবহার করতে পারেন । এটি jQuery, YUI এবং অন্যান্য বেশ কয়েকজনের সাথে কাজ করে।
ভিজ্যুয়াল ইভেন্টটি একটি জাভাস্ক্রিপ্ট বুকমার্কলেট তাই সমস্ত বড় ব্রাউজারের সাথে সামঞ্জস্যপূর্ণ।
ইভেন্ট শ্রোতাদের নজর রাখতে আপনি আপনার জাভাস্ক্রিপ্ট পরিবেশটি প্রসারিত করতে পারেন। মোড়ানো (বা 'জমিদার') কিছু কোড দিয়ে নেটিভ addEventListener () মেথড ক্যান কোনো ইভেন্টের শ্রোতা যোগ একটি রেকর্ড রেখে যে তারপর থেকেই । আপনাকে ডিএমএমে যা ঘটছে তা নির্ভুলভাবে প্রতিফলিত করে এমন রেকর্ড রাখতে আপনাকে এইচটিএমলেলেমেন্ট.প্রোটোটাইপ.রেমওভেন্টলাইজনার প্রসারিত করতে হবে।
কেবল উদাহরণের জন্য (অনির্ধারিত কোড) - আপনি কীভাবে অ্যাডভেন্টলিস্টনারকে অবজেক্টে রেজিস্টার্ড ইভেন্ট শ্রোতার রেকর্ড রাখতে 'র্যাপ' করবেন তার একটি উদাহরণ:
var nativeMethod = HTMLElement.prototype.addEventListener;
HTMLElement.prototype.addEventListener = function (type, listener) {
var el = e.currentTarget;
if(!(el.eventListeners instanceof Array)) { el.eventListeners = []}
el.eventListeners.push({'type':type, 'listener':listener});
nativeMethod.call(el, type, listener);
}