2012-10-09 13 views
5

में आयुएं लगती हैं मेरे पास अपेक्षाकृत बड़ी डोम है और किसी तत्व पर ईवेंट ट्रिगर करते समय क्रोम में अविश्वसनीय प्रदर्शन गिरावट देखी गई है। एक एकल घटना उदाहरण:क्रोम इवेंट ट्रिगरिंग में बड़े DOM

myElem.trigger('myevent.myscope',arguments); 

14ms लेता है !! (22.0.122 9.9 2 मीटर)

फ़ायरफ़ॉक्स 15.0.1 में एक ही घटना और msie 9 ट्रिगर करने के लिए 1ms से कम ले लो!

तत्व एक jquery वस्तु है और कैश किया गया है इसलिए ट्रिगर से पहले कोई डोम लुकअप नहीं हो रहा है। मैं console.time()

console.time('trigger'); 
myElem.trigger('myevent.myscope',arguments); 
console.timeEnd('trigger'); 

उपयोग कर रहा हूँ किसी को इस स्थिति पर प्रकाश का एक सा शेड कर सकते हैं

धन्यवाद

गैरी

+0

क्या आप अपना ईवेंट श्रोता कोड पोस्ट कर सकते हैं? – Derek

+0

@Derek ईवेंट ट्रिगर किया गया है लेकिन ईवेंट के लिए हमेशा एक ईवेंट श्रोता नहीं होता है। घटना का ट्रिगर एक विजेट के अंदर होता है उदा। 'loaded.mywidget' कभी-कभी एक ईवेंट श्रोता होता है और कभी-कभी नहीं होता है। या तो शरीर को या उस तत्व पर सीधे बाध्य किया जा सकता है जिसमें विजेट है। – garyrgilbert

+1

परीक्षण के लिए कोई कोड नहीं होने पर प्रदर्शन की जांच करना मुश्किल है ... शुभकामनाएँ! – Derek

उत्तर

1

अपने प्रश्न का यह नहीं नहीं एक सीधा जवाब।

लेकिन कस्टम घटनाओं के संबंध में मेरे अनुभव में, मैं ट्रिगर/jquery घटनाओं का उपयोग करने से बचूंगा।

jQuery संस्करण के आधार पर। ट्रिगर डोम पेड़ को बुलबुले करता है, इसमें काफी लंबा समय लग सकता है।

"jQuery 1.3, .trigger() के रूप में एड घटनाओं बबल सामने डोम पेड़, एक ईवेंट हैंडलर घटना पर हैंडलर से झूठी लौटने या .stopPropagation() विधि को फोन करके उत्साह से भरा हुआ बंद कर सकते हैं आपत्ति घटना में पारित कर दिया। "- trigger

मेरे व्यक्तिगत रूप से समाधान पीटर हिगिंस Pubsub उपयोग करने के लिए है।

मैंने jsperf परीक्षण बनाया है जो jquerys 'on' के प्रदर्शन में अंतर दिखा रहा है (ब्लू पबब, लाल jquery है, लंबा बेहतर है [प्रति सेकंड ऑपरेशन]); PUBSUB vs Jquery http://jsperf.com/peter-higgins-pubsub-vs-tiny-pubsub

अब मैं pubsub उपयोग करते हैं, से अधिक आदि घटनाओं कस्टम घटनाओं, और jQuery के साथ काम माउस जब यह क्लिक करने के लिए आता है, से।

बस मेरे 2 सेंट।

+0

हालांकि तकनीकी रूप से उत्तर नहीं है, मैं इसे एक उत्तर के रूप में चिह्नित करता हूं क्योंकि यह समस्या का "समाधान" है। ऐसी घटनाओं को ट्रिगर करने के बजाय जो श्रोता हो या न हो, एक पबूब दृष्टिकोण संभावित रूप से बहुत कम हो जाएगा और डोम पर बहुत से "शोर" से बचें। – garyrgilbert

संबंधित मुद्दे