2009-03-04 11 views
5

रीफ्रेश करता है मैं जीमेल के साथ काम करता है जो Greasemonkey स्क्रिप्ट लिखने की कोशिश कर रहा हूं। मुझे पता है कि कैसे जावास्क्रिप्ट बनाना है जो उपयोगकर्ता को इनबॉक्स लिंक या रीफ्रेश लिंक पर क्लिक करने पर प्रतिक्रिया करता है। मेरी समस्या यह है कि जीमेल समय-समय पर नई बातचीत के साथ इनबॉक्स को रीफ्रेश करता है और मेरे पास इस घटना को कैप्चर करने का कोई तरीका नहीं है। क्या जावास्क्रिप्ट में आवधिक अजाक्स घटनाओं को पकड़ने का कोई तरीका है?अजाक्स घटना को कैप्चर करने के लिए कैसे करें जो समय-समय पर जीमेल इनबॉक्स

उत्तर

1

मैं मीलों 'उत्कृष्ट सुझाव ऊपर की कोशिश की है, लेकिन क्योंकि जीमेल पहले से ही मूल का आह्वान किया है दुर्भाग्य से यह काम नहीं करता मेरे Greasemonkey स्क्रिप्ट में इसे बदलने का मौका होने से पहले setTimeout फ़ंक्शन।

एकमात्र चीज जो मैं कर सकता हूं वह जीमेल द्वारा किए गए परिवर्तनों पर प्रतिक्रिया करता है जब यह समय-समय पर इनबॉक्स को रीफ्रेश करता है। मैंने पाया कई डोम से संबंधित घटनाओं है कि आग जब एक नोड जोड़ा या हटा दिया जाता है देखते हैं कि:

http://www.w3.org/TR/DOM-Level-3-Events/events.html#event-DOMNodeInserted

जीमेल मेरा नवीनतम ईमेल के साथ डोम अपडेट कर रहा है के बाद से, मैं इन डोम की घटनाओं के लिए सुन सकते हैं (मैं कर रहा हूँ DOMNodeInserted का उपयोग करके) और परिवर्तनों पर प्रतिक्रिया दें।

यह सुरुचिपूर्ण नहीं है, लेकिन यह काम करता है।

1

आप कर सकते थे अपने खुद के कार्यों के साथ window.setTimeout समारोह (और संभवतः window.setInterval) की जगह की कोशिश:

window._setTimeout = window.setTimeout; 
window.setTimeout = function(func, delay) { 
    return window._setTimeout(function() { 
     // Your code goes here, before the client function is called 
     alert('A timeout event just fired!'); 

     if (typeof func == 'string') { 
      eval(func); 
     } else { 
      func(); 
     } 
    }, delay); 
} 
+0

यह एक अच्छा विचार है। दुर्भाग्य से, यह अब तक मेरे लिए काम नहीं कर रहा है। मैंने window.setTimeout और window.setInterval दोनों को बदलने की कोशिश की है और मुझे कोई अलर्ट नहीं मिल रहा है। मुझे आश्चर्य है कि जीमेल ने पहले ही इन कार्यों को बुलाया है इससे पहले कि मैं उन्हें Greasemonkey स्क्रिप्ट में बदलूं। –

+0

मैंने यह भी परीक्षण किया कि setTimeout और setInterval फ़ंक्शंस को प्रतिस्थापित करना उन्हें Greasmonkey स्क्रिप्ट में कॉल करके काम करता है। जैसा कि अपेक्षित है, मैं अलर्ट देखता हूं। मेरी समस्या यह प्रतीत होती है कि जीमेल ने Greasemonkey स्क्रिप्ट चलाने से पहले सेटटाइमआउट या सेट इंटरवल कहा है। –

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