2012-04-30 16 views
11

पर ध्यान केंद्रित करने के लिए क्लिक करें मैं अपने क्रोम एक्सटेंशन में डेस्कटॉप अधिसूचना का निर्माण कर रहा हूं जिस पर मैं काम कर रहा हूं। मुझे जिस कार्यक्षमता की आवश्यकता है, उसे आवश्यक है कि उपयोगकर्ता को उस टैब पर ले जाया जाए जो अधिसूचना विंडो पर क्लिक करते समय अधिसूचना का कारण बनता है। मैं chrome.tabs एपीआई का उपयोग करके काम कर सकता हूं, लेकिन मुझे यह पता लगाने में क्या प्रबंधन नहीं हो सकता है कि अधिसूचना क्लिक होने पर क्रोम को सामने कैसे लाया जाए।क्रोम डेस्कटॉप अधिसूचना सामग्री

मुझे पता है कि window.focus() क्रोम में अक्षम है, लेकिन यह निश्चित रूप से करना संभव है क्योंकि यह जीमेल डेस्कटॉप अधिसूचनाओं का व्यवहार है।

उत्तर

23
notification = webkitNotifications.createNotification(...) 
notification.onclick = function(){ 
    window.focus(); 
    this.cancel(); 
}; 
notification.show() 

... बिना किसी अतिरिक्त अनुमति के अपेक्षित कार्य करता है।

+1

यह अभी भी मान्य है? यह मेरे लिए काम नहीं करता – rodi

+0

यह गलत है, यह एचटीएमएल 5 एपीआई के लिए है, वह क्रोम एक्सटेंशन एपीआई के बारे में पूछ रहा है। – RVera

+0

यह मेरे लिए भी काम नहीं करता है। अधिसूचना पर क्लिक करने से अधिसूचना बंद हो जाती है और विंडो पर फोकस सेट नहीं किया जाता है। – Marko

6

एक टैब पर ध्यान केंद्रित करने के लिए chrome.tabs.update(tabId, {active: true}); का उपयोग करें (chrome.windows.update के साथ भ्रमित न होने के लिए)।

tabId अक्सर Tab type के माध्यम से प्राप्त किया जाता है। यह ऑब्जेक्ट कई विधियों/घटना श्रोताओं को पारित किया जाता है (कभी-कभी MessageSender type के माध्यम से)।

+0

मैं यह सुनिश्चित करना चाहता हूं कि दोनों टैब सक्रिय हैं और विंडो केंद्रित हो। क्या आपको पता है कि समानांतर में दोनों को करना हानिकारक है या क्या मुझे पहले टैब सक्रिय करना चाहिए, और फिर कॉलबैक में केंद्रित विंडो सेट करें? –

2
function msg(){ 
    var notification = new Notification("Title", {body: "Yore message", icon: "img.jpg" }); 
    notification.onshow = function() { setTimeout(notification.close(), 15000); }; 
    notification.onclick = function(){ 
     window.focus(); 
     this.cancel(); 
    }; 
} 
msg(); 

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