2012-07-17 11 views
7

संदेश की सूची से खिलाए जाने पर Jquery नोट प्लगइन टाइमआउट काम नहीं कर रहा है। मुझे सर्वलेट से संदेशों की सूची मिलती है और इस तरह नोटिस कॉल करें।नोटी Jquery प्लगइन टाइमआउट नहीं हो रहा है

<script> 
    function callNotification() 
    { 
     <c:foreach var = "message" items = "${sessionScope.notification}"> 
      notify('${message}'); 
     </c:foreach> 
    } 
    function notify(message) 
    { 
     noty({ 
       "text": message, 
       "theme": noty_theme_facebook", 
       "layout": topRight, 
       "information","animateOpen":{"height":"toggle"}, 
       "information","animateOpen":{"height":"toggle"}, 
       "speed":500, 
       "timeout":5000, 
       "closeButton":true, 
       "closeOnSelfClick":true, 
       "closeOnSelfOver":false, 
       "modal":false 
      }) 
    </script> 

आदर्श रूप से यह संदेशों पर लूप होना चाहिए और उन्हें 5000ms के टाइमआउट के साथ प्रिंट करना चाहिए। लेकिन यह सभी संदेशों को एक बार में प्रिंट करता है। मैंने आगे जावास्क्रिप्ट देशी सेटटाइम फ़ंक्शन का उपयोग करने की कोशिश की और इसके साथ मेरे कॉल नोटिफिकेशन को प्रतिस्थापित किया।

function callNotification() 
    { 
     <c:foreach var = "message" items = "${sessionScope.notification}"> 
     (function(message){ 
      setTimeout(function(){notify('${message}');},5000) 
     }('${message}') 
     }} 
     </c:foreach> 
    } 

लेकिन यह भी अप्रभावी साबित हुआ। अजीब बात यह है कि जब मैं "layout":center को विधि को सूचित करता हूं तो समय-समय पर ठीक काम करता प्रतीत होता है। मुझसे कहां गलती हो रही है। मैं चाहता हूं कि संदेशों को 5 सेकंड के समय के साथ प्रदर्शित किया जाए जिसके बाद पहला संदेश स्वचालित रूप से मिटा दिया जाता है और अगला दिखाया जाता है।

+0

क्या तुमने कभी यह पता लगा था? – ashes999

+0

क्या आप volunte.js फ़ाइल का उपयोग कर रहे हैं? – MaFo

+0

क्या आपने –

उत्तर

3

इस कार्य करवाने के लिए मैं jquery.noty.js में निम्नलिखित ...

self.$bar.delay(self.options.timeout).promise().done(function() { 
       self.close(); 
      }); 
इस के लिए

... बदल

setTimeout(function() { 
       self.close(); 
      }, self.options.timeout); 
8

Noty कोडित है, ताकि आप में बटन है, तो आपका नोटी, यह टाइमआउट को अक्षम करता है। यह मुझे समझ में नहीं आता है, लेकिन यह है कि यह कैसे है।

60: // If we have button disable closeWith & timeout options 
61: this.options.closeWith = []; 
62: this.options.timeout = false; 

बस this.options.timeout = false; को हटा दें और अगर आप बटन के साथ एक Noty है टाइमआउट काम करता रहेगा:

यह अपराधी (लाइन 62) है।

0

आप एक पैरामीटर के रूप इस विकल्प प्रदान करने की आवश्यकता: "बटन: गलत" आरंभीकरण के दौरान इस विकल्प को निर्दिष्ट करके

0

में आपके jquery.noty.packaged.js "master_self" फ़ाइल नामक एक वैश्विक चर बनाते हैं.अब पंक्ति 103 या 104 में लाइन var self = this; एक पंक्ति के ठीक नीचे होना चाहिए master_self स्वयं के रूप में हस्ताक्षर master_self = self;

अब एक ही फाइल में एक समारोह बनाने के लिए: बस अधिसूचना बनाने के लिए noty वस्तु बुला के बाद

function autoTimeout(timeoutVal){ 
    setTimeout(function(){ 
          var self = master_self; 
          if (typeof self.options.animation.close == 'string') { 
           self.$bar.addClass(self.options.animation.close).one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function() { 
            if(self.options.callback.afterClose) self.options.callback.afterClose.apply(self); 
            console.log(self); 
            self.closeCleanUp(); 
           }); 
          } else { 
           self.$bar.clearQueue().stop().animate(
            self.options.animation.close, 
            self.options.animation.speed, 
            self.options.animation.easing, 
            function() { 
             if(self.options.callback.afterClose) self.options.callback.afterClose.apply(self); 
            }) 
            .promise().done(function() { 
             self.closeCleanUp(); 
            }); 
          } 
         },timeoutVal); 
} 

अब अधिसूचना जो आप इस तरह से समय-समाप्त करना चाहते हैं पर स्पष्ट रूप से इस समारोह फोन :

autoTimeout(1000); 
2

मेरा जवाब v2.3.7 के लिए है।

नोटी जावास्क्रिप्ट ऑब्जेक्ट देता है, इसलिए यदि आप इसे console.dir (n) करके फ़ायरबग पर देखते हैं, तो आपको लौटे ऑब्जेक्ट के सभी विधियों और गुण मिलेंगे।

3 सेकंड सेट हो जाएगा के बाद समय समाप्त:

var n = noty({text: 'noty - a jquery notification library!'}); 
n.setTimeout(3000); 
+0

विकल्प के साथ बंद करने की कोशिश की है, मुझे बहुत मदद मिली – Nedudi

1

टाइमआउट विकल्प के साथ प्रयास करें closeWith आशा है कि यह ठीक से काम करेंगे

function generate(type, text) { 

       var n = noty({ 
        text  : text, 
        type  : type, 
        dismissQueue: true, 
        layout  : 'topRight', 
        closeWith : ['click','timeout'], 
        theme  : 'relax', 
        maxVisible : 10, 
        timeout  :7000, 

        animation : { 
         open : 'animated bounceInRight', 
         close : 'animated bounceOutRight', 
         easing: 'swing', 
         speed : 500 
        } 
       }); 
संबंधित मुद्दे