2014-10-20 9 views
14

क्रोम डेवटोल्स में, आप किसी डॉम तत्व के गुणों को बदलने या किसी तत्व के उप-संशोधनों पर जावास्क्रिप्ट को तोड़ सकते हैं।ब्राउज़र में, विंडो स्क्रॉल पर ब्रेक करें

मैं कुछ विरासत कोड पर काम कर रहा हूं जिसमें कुछ जावास्क्रिप्ट हैं जो कुछ स्थितियों के तहत पृष्ठ के शीर्ष पर स्क्रॉल करते हैं, और मैं जेएस को यह करना चाहता हूं।

क्या देवटोल्स में कोई तरीका है, तो स्क्रॉल ईवेंट पर तोड़ें?

यह jQuery या प्रोटोटाइप.जेएस या इवेंट बेस जेएस हो सकता है जो यह करता है, और मैंने .scrollTop या .animate के लिए कोडबेस खोजा है, और मुझे उनमें से बहुत कुछ मिला है, लेकिन कोई भी जो मेरी समस्या का कारण नहीं बना रहा है ।

+0

क्या आपने window.scrollTo या window.scroll की खोज की है? –

+0

हाँ मैंने उन लोगों की खोज की है, और वे दिखाते हैं, लेकिन उनमें से कोई भी उस पृष्ठ के लिए नहीं है जिस पर मैं हूं। –

+0

आप इसे दृश्य ईवेंट के साथ देख पाएंगे http://www.sprymedia.co.uk/article/visual+event –

उत्तर

2

स्क्रॉल स्थिति प्रोग्रामेटिक रूप से बदलते समय डीबगर को ट्रिगर करने के लिए आप कंसोल का उपयोग करके जेएस की इस पंक्ति को इंजेक्ट कर सकते हैं।

window.__defineSetter__("pageYOffset", function(){ 
    debugger; 
}); 

फिर, कॉल स्टैक को यह देखने के लिए देखें कि यह किस प्रकार ट्रिगर हुआ है।

आप डिबगर सक्रिय करने के लिए नहीं करना चाहते हैं, तो आप निम्न कोड के साथ स्टैक ट्रेस istead मुद्रित कर सकते हैं:

window.__defineSetter__("pageYOffset", function(){ 
    console.log(new Error().stack); 
}); 

एक अन्य विकल्प अपने स्वयं के साथ खिड़कियां scroll, scrollTo और scrollBy विधि को बदलने के लिए है ।

window.__defineGetter__('scroll', function(){ 
    console.log('window.scroll getter :' + new Error().stack); 
    return function(x,y){ 
    debugger; //or print stack trace 
    oldScroll(x,y); 
    } 
}); 

scrollTo और scrollBy के लिए दोहराएँ।

+0

मैंने कंसोल में उस डीबगर लाइन को छोड़ दिया और स्क्रॉलिंग बटन पर क्लिक करने पर कुछ भी नहीं आया। –

+0

@ जॉश क्या आपने 'स्क्रॉल', 'स्क्रॉल टू' और 'स्क्रॉलबी' विधियों को बदलने का प्रयास किया था? –

+0

सभी गेटर्स को परिभाषित करने का प्रयास किया और कंसोल में आउटपुट नहीं देखा ... क्रोम (नवीनतम) का उपयोग करना। जब मैं कंसोल में फ़ंक्शन डीफ़ आउटपुट करता हूं (यानी टाइप एफएन नाम और एंटर) मुझे नया एफएन डीफ़ दिखाई देता है। 'स्क्रॉल' का आह्वान करना, उदाहरण के लिए, 2 त्रुटियां फेंकता है: 'विंडो।पर त्रुटि :: 3: 42 पर : 1: 1 window.scroll गेटर: त्रुटि में: 5: 44 पर: 1: 1' – seebiscuit

4

मुझे प्रस्तुत किए गए लोगों की तुलना में वास्तव में तोड़ने के बारे में कोई अतिरिक्त विचार नहीं है।

लेकिन मुझे संदेह है कि यह स्क्रॉल नहीं कर रहा है जो समस्या का कारण बनता है, लेकिन HTML में '#' है।

<a href="#" onclick="return false;">x</a> 

एक बहुत ही आम पैटर्न है। जब आप "वापसी झूठी" भूल जाते हैं (या कुछ रोकता है), # (खाली एंकर) को नेविगेट किया जाएगा, जिससे स्क्रॉल शीर्ष पर पहुंच जाता है।

जांचें कि क्लिक करने के बाद यूआरएल # अंत में है या नहीं!

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