Chrome टैब पर कैसे ध्यान केंद्रित करें जिसने डेस्कटॉप अधिसूचना तैयार की है?


82

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

मेरे पास यह कोड है:

var n = window.webkitNotifications.createNotification('ico.gif', 'Title', 'Text');
n.onclick = function(x) { this.cancel(); };
n.show();

जब मैं अधिसूचना पर क्लिक करता हूं तो यह गायब हो जाता है। अब मुझे इस अधिसूचना को बनाने और फ़ोकस करने वाले पृष्ठ को लाने के लिए ऑनक्लिक फ़ंक्शन में कुछ कोड जोड़ने की आवश्यकता है। मुझे पता है कि यह संभव है क्योंकि जीमेल इसे बहुत अच्छी तरह से करता है। लेकिन मैं Gmail स्रोतों में देखने में सफल नहीं हुआ (वे कम से कम और मोटे हैं)।

किसी को पता है कि यह कैसे करना है?


इस कैनकेल को वर्तमान कैनरी चैनल में हटा दिया गया है और हटा दिया गया है।
ब्रैंडिटो

जवाबों:


107

आप Google Chrome में बस window.focus () लगा सकते हैं। क्लिक करने पर यह उस विंडो पर केंद्रित होगा।

var n = window.webkitNotifications.createNotification('ico.gif', 'Title', 'Text');
n.onclick = function(x) { window.focus(); this.close(); };
n.show();

मैंने जीमेल में इंस्पेक्टर को खोला, उपरोक्त कोड जोड़ा, एक अलग टैब में स्थानांतरित किया, और इसे चलाया। अधिसूचना दिखाई दी और एक बार क्लिक करने के बाद, इसने मुझे जीमेल में वापस लाया।


3
वाह ! यह सरल है ?! :-) शानदार जवाब, धन्यवाद। मैं इसके लिए काफी समय से घूमा था, लेकिन यह नहीं मिल सका। अब यह पूरी तरह से काम करता है, फिर से धन्यवाद।
फ्रॉडिक

1
कोई दिक्कत नहीं है! मज़ेदार हैकिंग :-)
मोहम्मद मंसूर

अब काम नहीं करता है jsfiddle.net/l2aelba/RhHgR :(, मैं इस विंडो को वापस फोकस करने के लिए अलर्ट () की तरह हैक कर सकता हूं
l2aelba

2
किसी को पता है कि अब कैसे काम करता है? कोड अब TAB पर ध्यान केंद्रित नहीं करता है .. नवीनतम क्रोम में सूचना का मतलब यह है कि जिस टैब से यह आ रहा था उस पर ध्यान केंद्रित नहीं करता है। यह अभी भी जीमेल में जागता है?
होको

6
यह अब अप्रासंगिक है , क्रॉस ब्राउज़र समाधान के लिए ओस्वाल्डो का जवाब नीचे देखें।
निक

48

अधिसूचनाओं का उपयोग करना ।

if (typeof Notification !== 'undefined') {
  alert('Please us a modern version of Chrome, Firefox, Opera or Safari.');
  return;
}

Notification.requestPermission(function (permission) {
  if (permission !== 'granted') return;

  var notification = new Notification('Here is the title', {
    icon: 'http://path.to/my/icon.png',
    body: 'Some body text',
  });

  notification.onclick = function () {
    window.focus();
  };
});

window.focus();उसने चाल चली ! इसे सही उत्तर के रूप में चिह्नित किया जाना चाहिए।
मैक्सिमे लाफरी

3
window.focus()क्रोम 60 पर काम नहीं करता है, parent.focus()काम के साथ
जैज़कैट

यह काम करता है लेकिन जैसे ही मैं "शॉर्टकट बनाएं" विकल्प का उपयोग करता हूं और इसे स्टैंडअलोन ऐप में बदल देता हूं, रीडायरेक्ट काम नहीं कर रहा है और एक नया टैब खोलता है।
वाजा_नए

26

window.focus()हमेशा हाल के वेबकिट ब्राउज़र संस्करणों (क्रोम, सफारी आदि) में काम नहीं करता है। लेकिन parent.focus()करता है।

यहाँ एक पूर्ण jsfiddle: https://jsfiddle.net/wv0w7uj7/3/ है

कोड:

function notifyMe() {
  if (Notification.permission !== "granted")
    Notification.requestPermission();
  else {
    var notification = new Notification('Notification title', {
      icon: 'http://cdn.sstatic.net/stackexchange/img/logos/so/so-icon.png',
      body: "You've been notified!",
    });

    notification.onclick = function () {
      parent.focus();
      window.focus(); //just in case, older browsers
      this.close();
    };
  }
}

1
एकांत संदर्भ के लिए 'यह' का संदर्भ देना सामान्य है, इसलिए कॉल के बजाय this.close, evt.target.close'ऑनक्लिक' ईवेंट को कॉल करना बेहतर है : notification.onclick = function (evt) { evt.target.close(); }
एलेजांद्रो सिल्वा

parent.focus (); मेरे लिये कार्य करता है! 68.0.3440.106 क्रोम पर काम करना
जोहान मोरालेस 14

2

onclickसंपत्ति का उपयोग करना , jQuery के addEventListenerलिए वेनिला जावास्क्रिप्ट या onविधि के लिए उपयोग करना वास्तव में अच्छा अभ्यास नहीं है ।

var notify = new Notification('Test notification');

वनीला:

notify.addEventListener('click', function(e) {
    window.focus();
    e.target.close();
}, false);

jQuery:

$(notify).on('click', function(e) {
    window.focus();
    e.target.close();
});

0

यह इस तरह के this.close()बजाय होना चाहिए this.cancel():

var n = window.webkitNotifications.createNotification('ico.gif','Title', 'Text');
n.onclick = function(x) { window.focus(); this.cancel(); };
n.show();
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.