हेलो, हेब्र!
प्रविष्टि
मैं अपने पसंदीदा या बहुत पसंदीदा साइट पर कार्यों को स्वचालित करने के लिए उपयोगकर्तास्क्रिप्ट और jQuery के एक गुच्छा का उपयोग करने की व्यक्तिगत खोज के साथ साझा करना चाहता हूं। मैं प्रतियोगिता में एक पोर्टल पर यहां भाग ले रहा हूं, उनमें से एक प्रस्ताव सबसे सक्रिय रूप से मतदान करने वाले उपयोगकर्ता होने के लिए विजेताओं के बीच होना है।
निर्णय
कोई छोटा डेस्कटॉप एप्लिकेशन लिख सकता है (C # में अच्छा अनुभव है), लेकिन यह समय लेने वाला है, और समस्या को जल्द से जल्द हल किया जाना चाहिए। उपयोगकर्तालेख मेरी सहायता के लिए आया, जिससे आप पृष्ठ में अपने फ़ंक्शन को एम्बेड कर सकते हैं और इसे चला सकते हैं।
नियमित अभिव्यक्तियों (मानक RegEx फ़ंक्शन) की समस्याओं से बचने के लिए, मैंने jQuery लाइब्रेरी का उपयोग किया और पेज में मूल जावास्क्रिप्ट फ़ंक्शंस पेश किए:
var head = document.getElementsByTagName('head')[0]; var script= document.createElement('script'); script.type= 'text/javascript'; script.src= 'http:
अगला कदम वोट बटन को निर्धारित करना था:
<tr> <td> <a href="#"><span></span></a> </td> <td> <span> :</span> </td> <td> <div id="thumbs_up"> <img src="thumbs_up.png" onclick="vote('UnicID', '1');" alt=""> </div> </td> <td align=center width=20px> <div id="mess_ratio_UnicID"> <span><b></b></span> </div> </td> <td> <div id="thumbs_down"> <img src="thumbs_down.png" onclick="vote('UnicID', '-1');" alt=" "> </div> </td> <td> <div id="vote_status_UnicID"> <span></span> </div> </td> <td> <span> </span><span></span> </td> </tr>
वोटिंग बटन "thumbs_up.png" या "thumbs_down.png" छवि के साथ एक तस्वीर थी, पूरी तरह से खराब लड़का होने का फैसला करते हुए, सभी प्रकाशनों को चुना। इस प्रकार, उसने उच्च रेटिंग और वोटों के बिना "मारे गए" प्रकाशनों को घटा दिया, जो माइनस की रेटिंग पेश करता है।
निम्नलिखित कोड को कॉल करके, पृष्ठ पर सभी प्रकाशनों के लिए (अधिक सटीक रूप से, खिलाफ) एक वोट था:
jQuery('img[src*=thumbs_down]').click();
फिर मैं साइट के चारों ओर भाग गया और प्रत्येक वोट पर नजर रखी।
समस्या
अगले दिन, फोरम में किसी ने दुर्भावनापूर्ण मूल्यांकक के बारे में प्रशासन से शिकायत की। एक ही गति से भाग लेना जारी रखना असंभव था, वे अचानक अवरुद्ध हो जाएंगे। स्थिति को कम आंकने के बाद, मैंने स्वचालित वोट को फिर से बनाने और प्रत्येक प्रकाशन की वर्तमान रेटिंग निर्धारित करने का निर्णय लिया। हालत इस प्रकार थी:
1) यदि रेटिंग शून्य या शून्य से कम है, तो +1 वोट करें;
2) यदि रेटिंग शून्य से अधिक है, तो वोट -1;
कार्य समान था,
न कि नियमित अभिव्यक्ति
का उपयोग करना। उन्होंने jQuery प्रलेखन में रुचि ली, नए कार्यों ".not" () ",": सम्मिलित () "," .has () /: है () "।
कट HTML कोड (ऊपर देखें) की समीक्षा करने और अभिव्यक्ति को सही करने के बाद, मुझे निम्नलिखित कोड प्राप्त हुआ:
jQuery('img[src*=thumbs_down]').parent().parent().parent().not(" tr:has(span:contains('MyNick'), b:contains('-'), b:contains('0') )").find('img[src*=thumbs_down]').click(); jQuery('img[src*=thumbs_down]').parent().parent().parent().has(" span:contains('MyNick'), b:contains('-'), b:contains('0') ").find('img[src*=thumbs_up]').click();
तो, क्रम में:
पहली jQuery की क्वेरी
- वोटिंग चित्रों को खोजें [jQuery ('img [src * = thumbs_down]'))
- फिर हम माता-पिता को 3 जंप देते हैं और रेटिंग और वोटिंग बटन के निकटतम आम अभिभावक के पास पहुंचते हैं, यह TR शाखा है (.parent ()। पैरेंट ())।
- परिणामों से बाहर फ़िल्टर उन है कि पाया:
a) या मेरे उपनाम के साथ स्पैन टैग नहीं है;
बी) या माइनस की रेटिंग के साथ एक टैग "बी" शामिल नहीं है;
ग) या शून्य की रेटिंग के साथ एक टैग "बी" शामिल नहीं है;
[.not ("tr: has (अवधि: समाहित है ('MyNick'), b: समाहित है ('-'), b: समाहित है ('0')"] - नकारात्मक वोट बटन ढूंढें और इसे क्लिक करें [.find ('img [src * = thumbs_down]'); क्लिक करें ()]
दूसरी jQuery की क्वेरी
- वोटिंग चित्रों को खोजें [jQuery ('img [src * = thumbs_down]'))
- फिर हम माता-पिता को 3 जंप देते हैं और रेटिंग और वोटिंग बटन के निकटतम आम अभिभावक के पास पहुंचते हैं, यह TR शाखा है (.parent ()। पैरेंट ())।
- परिणामों से बाहर फ़िल्टर उन है कि पाया:
a) या मेरे उपनाम के साथ एक स्पैन टैग है;
बी) या माइनस की रेटिंग के साथ "बी" टैग;
ग) या शून्य की रेटिंग के साथ एक टैग "बी" होता है;
[.has ("अवधि: समाहित है ('MyNick'), b: समाहित है ('-'), b: समाहित ('0') span)] - सकारात्मक मतदान बटन ढूंढें और इसे क्लिक करें [.find ('img [src * = thumbs_up]'); क्लिक करें ()];
परिणाम
एक बार फिर से पुष्टि करना कि आलस्य प्रगति का इंजन है, रेटिंग के साथ स्वचालित और न्यूनतम स्वचालित मतदान किया और jQuery की नई विशेषताओं को सीखा। इस तरह के सरल और पठनीय कार्यों के साथ, आप इफ-शर्तों की कई लाइनों से बच सकते हैं।