Wednesday 15 July 2015

javascript - Greasemonkey snapshot outdated after page refresh? -


परिदृश्य: एक ग्रेज़म्की स्क्रिप्ट लिखना जो चहचहाना टिप्पणियों को छुपाता है (कक्षा के साथ सूची तत्व द्वारा इंगित किया जाता है) बीबीसी लाइव स्पोट्र्स रिपोर्ट्स पर। "

मैंने कुछ ऐसा काम किया है जो मोटे तौर पर काम करता है (नीचे की चेतावनियां) waitForKeyElements का उपयोग कर:

  // == UserScript == // @name myName // @ namespace none // @ वर्णन myDescription // @ शामिल करें http://www.bbc.co.uk/* // @require http://ajax.googleapis.com/ajax/ लिब्स / jquery / 1.6.2 / jquery.min.js // @require https://gist.github.com/raw/2625891/waitForKeyElements.js // @version 2.0 / @grant none // यूआरआइस्क्रिप्ट == समारोह doHousekeeping (jnode) {// कमेंटरी के भीतर सभी ट्वीट आइटम खोजें, और उन्हें var snapResults = document.evaluate (".// div [@ id = 'live-event-text-commentary'] / ol / ली [शामिल (@ वर्ग, 'वर्ग- TWEET')] ", दस्तावेज़.body, नल, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, नल); के लिए (var i = snapResults.snapshotLength - 1; i & gt; = 0; i--) {snapResults.snapshotItem (i) .style.display = "none"; }} // प्रारंभिक लोड doHousekeeping पर सफाई (); // मुख्य शरीर जब भी प्रतीक्षा करता है, तब सफाई की दोहराएँ। फेराकेईएलेमेंट्स ("# लाइव-इवेंट-टेक्स्ट-टिप्पणी", डूहाउसकीपिंग);   

समस्या: पृष्ठ रिफ्रेश करते समय, doHousekeeping करता है निष्पादित करता है (और अधिकांश अपमानजनक वस्तुओं का ); हालांकि, सबसे हालिया आपत्तिजनक आइटमों में से एक मुट्ठी अभी भी पृष्ठ के शीर्ष पर रहते हैं।

यह सब क्यों छिपाने में नाकाम रही है? मेरा संदेह यह है कि जब कोई शरीर बदलता है तो दस्तावेज / स्नैपशॉट को किसी तरह ताज़ा नहीं किया जा रहा है। इसके अलावा मैं jQuery के लिए नया हूँ, इसलिए मुझे पता है कि मेरे हाउसकीपिंग फंक्शन पुराने स्कूल और उप इष्टतम दोनों हैं; क्लीनर, पूर्ण-कार्यात्मक कार्यान्वयन के लिए कोई भी मदद काफी सराहना की जाएगी।

समस्या यह है कि ऐसा प्रतीत होता है waitForKeyElements को दिए गए चुने और चयनकर्ता के बीच एक बेमेल नहीं है।

इस मामले में waitForKeyElements का उपयोग करने का सही तरीका है: < / P>

  // == यूज़रस्क्रिप्ट == // @name myName // @ namespace none // विवरण @ mydescription // @ शामिल http://www.bbc.co.uk/* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js // @require https://gist.github.com/raw/2625891/waitForKeyElements.js // @ संस्करण 2.0 // @ ग्रैन्ट GM_addStyle // == / यूज़रस्क्रिप्ट == / * - @ ग्रैन्ट डायरेक्टिव को जीएम 1.0 में पेश किए गए डिज़ाइन परिवर्तन के आसपास काम करने की आवश्यकता है। यह सैंडबॉक्स को पुनर्स्थापित करता है * / / - कमेंट्री के भीतर सभी ट्वीट आइटम ढूंढें, और उन्हें छिपाने के लिए। WaitForKeyElements ("# live-event-text-commentary ol li.class-TWEET", doHousekeeping); समारोह doHousekeeping (jNode) {jNode.hide (); }   


इसके अलावा, @grant none का उपयोग न करें, क्योंकि यह असमान दुष्प्रभाव पैदा कर सकता है।

No comments:

Post a Comment