0

Sobald ich auf die Schaltfläche Produkt anzeigen, die ich auf der Benachrichtigung erstellt, öffnet der Link in einem neuen Tab, aber für eine zweite Benachrichtigung, den Link öffnet zwei ähnliche Tabs und es geht weiter. Die Registerkarten nehmen mit steigender Anzahl der Benachrichtigungen zu. Es ist eine E-Commerce-WebsiteIch kann nicht meine Desktop-Push-Benachrichtigung für Chrome-Erweiterung auf der gleichen Registerkarte öffnen

Hier ist mein Code. Ich weiß nicht, wo ich falsch gelaufen bin.

var messages = [] ; 
var ids = [] ; 

var latestItem; 


$(function(){ 
engine(); 
    setInterval(engine, 60000); 
}); 

function engine(){ 
    var newItems = []; 
     $.get('https://www.mysite.or/electronics-video/', function(data){ 
      var htmlData = data; 

      $data = ($(htmlData).find('.offer').eq(0)); 
      $data.find('.fleft').remove(); 

      $data.find('.rel.observelinkinfo.inlblk.zi3').remove(); 
      $data.find('.suggesttitleright.small.top.abs.zi2.br4.hidden').remove(); 
      $data.find('.thumb.vtop.inlblk.rel.tdnone.linkWithHash.scale4.detailsLink').remove(); 
      $data.find('.color-9.lheight16.margintop5').remove(); 
      $data.find('.breadcrumb.x-normal').remove(); 
      $data.find('.normal.inlblk.pdingtop5.lheight16.color.2').remove(); 


     $('body').append($data); 

     for(i = 0; i<$data.find('h3.x-large.lheight20.margintop5').length; i++){ 

      ids[i]=($($data).find('td.wwnormal.tright.td-price').eq(i).find('p.price').text()).replace(/\n\r/g, '').trim(); 
      messages[i]= ($($data).find('h3.x-large.lheight20.margintop5').eq(i).find('a.marginright5.link.linkWithHash.detailsLink').text()).replace(/\n\r/g, '').trim(); 

     } 


if (latestItem == ids[0]) { 

    }else if(latestItem === undefined) { 
     var firstRun = { 
      type: "basic", 
      title: "Site Notifier", 
      message: 'Visit the website for updates on new products', 
      iconUrl: "origi.png" 
     } 


     chrome.notifications.create(firstRun); 
     latestItem = ids[0]; 

    }else if(latestItem != ids[0]) { 
     for(j = 0; j<ids.length; j++){ 
      if(latestItem == ids[j]){ 
       break; 
      }else{ 
       if (messages[j] != " "){ 
       newItems[j]= messages[j].concat(" - ").concat(ids[j]); 
      } 
     } 

    } 
     latestItem = ids[0]; 
    } 
     if (newItems.length == 0){ 


     }else{ 
      for(i=0;i<newItems.length; i++){ 
     var myItem = { 
      type: "basic", 
      title: "New Product Alert!", 
      message: newItems[i], 
      contextMessage: "Site Notifier", 
      buttons: [{ 
       title: "View Product" 

      }], 
      iconUrl: "origi.png" 
     }; 

     chrome.notifications.onButtonClicked.addListener(function(){ 
      window.open('https://www.mysite.or/electronics-video/'); 


     }); 

     chrome.notifications.create(myItem); 

      } 
     } 
    }); 
} 

Antwort

0

Versuch unter Code

chrome.notifications.onButtonClicked.addListener(function (notificationId, buttonIndex) { 
    if (notificationId == '1234567' && buttonIndex == 0) { 
     var $ismysite = false; 
     chrome.windows.getAll({ populate: true }, function (windows) { 
      windows.forEach(function (window) { 
       window.tabs.forEach(function (tab) { 
        if (tab.url.toString().lastIndexOf('mysite') > -1) { 
         $ismysite= true 
        } 
       }); 
      }); 
      if (!$ismysite) { 
       $ismysite = false; 
       chrome.tabs.create({ url: "YourSire" }, function() { 
       }); 
      } 
     }); 
    } 
}); 
0

in Ihrem Code, am Ende if (newItems.length == 0)
else Anweisung Benachrichtigung für jedes Element von newItems schaffen Array UND es onClicked Zuhörer hinzufügen.
Sie müssen aus dieser Schleife

chrome.notifications.onButtonClicked.addListener(function(){ 
    window.open('https://www.mysite.or/electronics-video/'); 
}); 

irgendwo ziehen.
Wenn Sie wissen möchten, auf welche Benachrichtigung geklickt wird, können Sie im Callback nach ID suchen. Dazu müssen Sie wahrscheinlich eine ID - URL - Verbindung im globalen Objekt pflegen.

+0

Könnte einen Beispielcode oder nur eine Bearbeitung erstellen. –

+0

Es war wirklich ein Problem, weiß nicht, was Sie mich durch ziehen –

+0

@CollinKiprono jedes Mal, wenn Sie durch Ihre ** NewItems ** -Array durchlaufen, fügen Sie ** onButtonClicked ** Listener und sie multiplizieren. Sie müssen diesen Listener nur einmal irgendwo außerhalb der Schleife hinzufügen. –

Verwandte Themen