टास्क बार में ब्राउज़र विंडो ब्लिंक करें


104

मैं जावास्क्रिप्ट का उपयोग करके टास्क बार में उपयोगकर्ता का ब्राउज़र ब्लिंक / फ्लैश / हाइलाइट कैसे कर सकता हूं? उदाहरण के लिए, यदि मैं प्रत्येक 10 सेकंड में AJAX का अनुरोध करता हूं, तो यह देखने के लिए कि क्या उपयोगकर्ता के पास सर्वर पर कोई नया संदेश है, मैं चाहता हूं कि उपयोगकर्ता इसे तुरंत जान लें, भले ही वह उस समय किसी अन्य एप्लिकेशन का उपयोग कर रहा हो।

संपादित करें: ये उपयोगकर्ता नया संदेश आने पर विचलित होना चाहते हैं।


7
अजीब, याहू मेल करता है, मुझे आश्चर्य है कि कैसे
अय्याश

जवाबों:


86

यह टास्कबार बटन को रंग बदलने में फ्लैश नहीं करेगा, लेकिन जब तक वे माउस नहीं ले जाते, तब तक यह शीर्षक बंद और पलक झपकते रहेगा। यह क्रॉस प्लेटफॉर्म पर काम करना चाहिए, और भले ही उनके पास यह एक अलग टैब में हो।

newExcitingAlerts = (function () {
    var oldTitle = document.title;
    var msg = "New!";
    var timeoutId;
    var blink = function() { document.title = document.title == msg ? ' ' : msg; };
    var clear = function() {
        clearInterval(timeoutId);
        document.title = oldTitle;
        window.onmousemove = null;
        timeoutId = null;
    };
    return function () {
        if (!timeoutId) {
            timeoutId = setInterval(blink, 1000);
            window.onmousemove = clear;
        }
    };
}());

अद्यतन : आप HTML5 सूचनाओं का उपयोग करके देखना चाहते हैं ।


1
मैं IE 8 में वर्णित के रूप में काम करने के लिए इसे प्राप्त नहीं कर सका। यह हमेशा के लिए शीर्षक ब्लिंक करता रहा। Onmousemove का उपयोग करने के बजाय, मुझे इस बात पर नज़र रखने के लिए onfocus और onblur का उपयोग करना था कि विंडो फ़ोकस में थी या नहीं और ऑनफोकस फ़ंक्शन में पलक को रोकना नहीं था। इसलिए जब पृष्ठ लोड होता है, तो मैं onfocus और onblur फ़ंक्शन पंजीकृत करता हूं जो बूलियन "फ़ोकस" चर को चालू करता है। पलक झपकते ही ट्रैक करने के लिए मेरे पास एक और बूलियन है। ऑनफोकस में, यदि ब्लिंकिंग शुरू हो गई है, तो मैं इसे रोक देता हूं।
पीटर एम

4
यह क्रोम में काम नहीं करता है ... मुझे नहीं लगता कि क्रोम समझता है कि खाली स्ट्रिंग कुछ भी है। यदि मैं "रिक्त" संदेश के रूप में एक हाइफ़न का उपयोग करता हूं, तो यह ठीक काम करता है।
जॉन Bubriski

1
यदि अलर्ट कई बार चालू हो जाता है तो यह स्टैक लगता है। यह अंतराल तेज और तेजी से हो रहा है, फिर जब आप हटाते हैं, तो यह केवल एक अंतराल को हटा देता है।
घोड़ा

2
विंडोज 7 में, शीर्षक बदलने के टास्कबार में झपकी नहीं करता है / फ्लैश
चंद

1
आप इस पर तर्क (संदेश) कैसे पास करते हैं?
शिंजौ

54

मैंने ब्राउज़र टाइटल बार में अधिसूचना संदेशों को ब्लिंक करने के उद्देश्य से jQuery प्लगइन बनाया है । आप ब्लिंकिंग अंतराल, अवधि जैसे विभिन्न विकल्पों को निर्दिष्ट कर सकते हैं, यदि विंडो / टैब के फोकस होने पर ब्लिंकिंग बंद हो जाए, आदि प्लगइन फ़ायरफ़ॉक्स, क्रोम, सफारी, IE6, IE7 और IE8 में काम करता है।

इसका उपयोग करने के तरीके के बारे में एक उदाहरण इस प्रकार है:

$.titleAlert("New mail!", {
    requireBlur:true,
    stopOnFocus:true,
    interval:600
});

यदि आप jQuery का उपयोग नहीं कर रहे हैं, तो आप अभी भी देखना चाहते हैं स्रोत कोड (कुछ quirky कीड़े और किनारे के मामले हैं जो आपको शीर्षक ब्लिंक करते समय काम करने की आवश्यकता होती है यदि आप सभी प्रमुख ब्राउज़रों का पूरी तरह से समर्थन करना चाहते हैं)।


6

मेरा "उपयोगकर्ता इंटरफ़ेस" प्रतिक्रिया है: क्या आप सुनिश्चित हैं कि आपके उपयोगकर्ता अपने ब्राउज़र को चमकाना चाहते हैं, या आपको लगता है कि वे क्या चाहते हैं? यदि मैं आपके सॉफ़्टवेयर का उपयोग कर रहा था, तो मुझे पता है कि अगर ये अलर्ट बहुत बार हुआ और मैं अपने रास्ते में आ गया तो मुझे गुस्सा आएगा।

यदि आप सुनिश्चित हैं कि आप इसे इस तरह करना चाहते हैं, तो जावास्क्रिप्ट अलर्ट बॉक्स का उपयोग करें। Google कैलेंडर ईवेंट रिमाइंडर्स के लिए ऐसा करता है, और उन्होंने शायद इसमें कुछ सोचा था।

एक वेब पेज वास्तव में जरूरत से ज्यादा अलर्ट अलर्ट के लिए सबसे अच्छा माध्यम नहीं है। यदि आप "ZOMG" की तर्ज पर कुछ डिज़ाइन कर रहे हैं, तो सर्वर नीचे हैं! अलर्ट, स्वचालित ई-मेल या सही लोगों को एसएमएस संदेश ट्रिक कर सकते हैं।


11
यह प्रश्न का उत्तर प्रदान नहीं करता है। किसी लेखक से स्पष्टीकरण मांगने या उसका अनुरोध करने के लिए, उनके पोस्ट के नीचे एक टिप्पणी छोड़ दें।
गुप्तवार्ता

2
@secretformula क्या 5 साल पुराने पदों को खोदना और उन्हें निम्न-गुणवत्ता के रूप में चिह्नित करना वास्तव में आवश्यक है?
तैफुन

2
@Taifun यह VLQF कतार में आया इसलिए हां है। मेटा ने इस पर भी चर्चा की है
secretformula

@ सेक्रेफॉर्मफॉर्म, यह वास्तव में प्रश्न का बहुत अच्छा उत्तर प्रदान करता है: एक जावास्क्रिप्ट का उपयोग करें alert
सैम

गलत है या नहीं, यह मेरे लिए एक जवाब की तरह नहीं दिखता है, लेकिन इतिहास से पता चलता है कि 2 मध्यस्थों ने पहले ही NAA ध्वज को अस्वीकार कर दिया है, इसलिए मैं यहां आम सहमति का पालन कर रहा हूं।
जीन फ़्राँस्वा Fabre

6

माना जाता है कि आप इसे विंडोज़ के लिए विंडोज जावास्क्रिप्ट एपीआई के लिए विकसित कर सकते हैं:

http://ajaxian.com/archives/growls-for-windows-and-a-web-notification-api

आपके उपयोगकर्ताओं को हालांकि ग्रोथ इंस्टॉल करना होगा।

आखिरकार यह NotificationAPI के रूप में, Google गियर का हिस्सा बनने जा रहा है:

http://code.google.com/p/gears/wiki/NotificationAPI

तो मैं अब के लिए ग्रोवल दृष्टिकोण का उपयोग करने की सलाह दूंगा, यदि संभव हो तो विंडो शीर्षक अपडेट के लिए वापस गिर रहा है, और पहले से ही गियर्स अधिसूचना एपीआई का उपयोग करने के प्रयासों में इंजीनियरिंग, जब यह अंततः उपलब्ध हो जाता है।


5
                var oldTitle = document.title;
                var msg = "New Popup!";
                var timeoutId = false;

                var blink = function() {
                    document.title = document.title == msg ? oldTitle : msg;//Modify Title in case a popup

                    if(document.hasFocus())//Stop blinking and restore the Application Title
                    {
                        document.title = oldTitle;
                        clearInterval(timeoutId);
                    }                       
                };

                if (!timeoutId) {
                    timeoutId = setInterval(blink, 500);//Initiate the Blink Call
                };//Blink logic 

3

जिस तरह से मैं ऐसा करने के बारे में सोच सकता हूं वह यह है कि जब संदेश प्राप्त होता है तो अलर्ट ('आपके पास एक नया संदेश') जैसा कुछ होता है। यदि विंडो कम से कम है, तो यह टास्कबार को फ्लैश करेगा, लेकिन यह एक डायलॉग बॉक्स भी खोलेगा, जिसे आप नहीं चाहते हैं।


1
वर्तमान ब्राउज़रों में असंगत - प्रत्येक अलग ढंग से व्यवहार करता है और कोई भी टास्कबार आइकन फ़्लैश नहीं करता है (परीक्षण किया गया Win8 - IE10, क्रोम, फ़ायरफ़ॉक्स)
danwellman

3

क्यों नहीं दृष्टिकोण है कि GMail का उपयोग करता है और पृष्ठ शीर्षक में संदेशों की संख्या दिखाते हैं?

नया संदेश आने पर कभी-कभी उपयोगकर्ता विचलित नहीं होना चाहते हैं।


2

आप window.focus () को आज़माना चाहते हैं - लेकिन अगर स्क्रीन इधर-उधर हो जाए तो यह कष्टप्रद हो सकता है


1

आप उपयोगकर्ता को सचेत करने के लिए प्रत्येक नए संदेश के साथ वेब पेज का शीर्षक बदल सकते हैं। मैंने यह एक ब्राउज़र चैट क्लाइंट के लिए किया और अधिकांश उपयोगकर्ताओं ने सोचा कि यह काफी अच्छा काम करता है।

document.title = "[user] hello world";

1

AFAIK, स्थिरता के साथ ऐसा करने का कोई अच्छा तरीका नहीं है। मैं एक IE केवल वेब-आधारित IM क्लाइंट लिख रहा था। हमने विंडो.फोकस () का उपयोग करके समाप्त किया, जो कि ज्यादातर समय काम करता है। कभी-कभी यह वास्तव में विंडो को अग्रभूमि ऐप से फोकस चोरी करने का कारण होगा, जो वास्तव में कष्टप्रद हो सकता है।


0

नया संदेश आने पर ये उपयोगकर्ता विचलित होना चाहते हैं।

ऐसा लगता है कि आप एक आंतरिक कंपनी परियोजना के लिए एक ऐप लिख रहे हैं।

आप .net में एक छोटी विंडोज़ ऐप लिखने की जांच करना चाहते हैं, जो एक अधिसूचित आइकन जोड़ता है और फिर नए संदेश मिलने पर फैंसी पॉपअप या बैलून पॉपअप या जो भी कर सकते हैं।

यह अधिक कठिन नहीं है और मुझे यकीन है कि यदि आप एसओ से पूछते हैं कि 'मैं एक ट्रे आइकन कैसे दिखाऊं' और 'मैं कैसे सूचनाओं को पॉप अप करता हूं' तो आपको कुछ शानदार उत्तर मिलेंगे :-)

रिकॉर्ड के लिए, मुझे पूरा यकीन है कि (अलर्ट / प्रॉम्प्ट डायलॉग बॉक्स का उपयोग करने के अलावा) आप जेएस में टास्कबार को फ्लैश नहीं कर सकते हैं, क्योंकि यह भारी रूप से विंडोज़ विशिष्ट है, और जेएस वास्तव में इस तरह काम नहीं करता है। आप कुछ IE- विशिष्ट विंडोज़ सक्रियण नियंत्रणों का उपयोग करने में सक्षम हो सकते हैं, लेकिन फिर आप IE को अपने गरीब उपयोगकर्ताओं को देते हैं। ऐसा न करें :-(


0
function blinkTab() {
        const browserTitle = document.title;
        let timeoutId;
        let message = 'My New Title';

        const stopBlinking = () => {
            document.title = browserTitle;
            clearInterval(timeoutId);
        };

        const startBlinking = () => {
            document.title = document.title  === message ? browserTitle : message;
        };

        function registerEvents() {
            window.addEventListener("focus", function(event) { 
                stopBlinking();
            });

            window.addEventListener("blur", function(event) {
                const timeoutId = setInterval(startBlinking, 500);
            });
        };

        registerEvents();
    };


    blinkTab();
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.