2016-12-07 2 views
0

В настоящее время я работаю над расширением chrome, которое будет уведомлять, если getElementId отсутствует на странице .. и, к сожалению, расширенное уведомление не отображается в скрипте contennt. Должен ли я использовать Message Passing для этого?Rich Notification не работает

load.js

con = document.getElementById('content'); 

if (con !=null){ 

    var options = { 

    type:"basic", 
    title:"Error", 
    message:"Error", 
    iconUrl:"logo1.png" 
} 

chrome.notifications.create(options, callback); 

function callback() 
{ 

    console.log('yey'); 
} 

} 

manifest.json

{ 
    "manifest_version": 2, 

    "name": "CRM Online Chrome Extension", 
    "description": "License authentication key for the clients.", 
    "version": "1.0", 

"background": { 
     "scripts": [ 
      "background.js" 




     ], 
     "persistent": true 
    }, 


     "content_scripts":[ 
{ 


    "matches":[ "*://*/*", 
     "*://*/*" 
    ], 
    "js":["payload.js","load.js"] 

} 


    ], 

    "browser_action": { 
     "default_title": "Sample", 
     "default_icon": "logo1.png", 
     "default_popup": "popup.html" 

    }, 
    "permissions": [ 
     "notifications", 
     "tabs", 
     "*://*/*", 
     "*://*/*" 






    ] 


    // "options_page": "option.html" 
} 
+0

'chrome.notification' API не доступен скриптами контента. Вы должны передать сообщение на фоновое изображение, которое, в свою очередь, вызовет функцию 'chrome.notification'. –

+0

У меня есть идея, но я не знаю, как это сделать. потому что это первое, что я создам расширение, поэтому я не знаю, как его синтаксис. это нормально, если вы дадите пример синтаксиса? – dionell

+0

@ dionell, Этот вопрос содержит код, очень похожий на код, содержащийся в [этот вопрос задан на 5 часов раньше] (http://stackoverflow.com/q/41009764/3773011). Это групповой проект? Школьное задание? – Makyen

ответ

2

Вы должны send a message от вашего скрипта содержимого на фоне страницы и этот последний может создать уведомление на прием сообщения.

Например:

background.js

chrome.runtime.onMessage.addListener(function(message){ 
    if (message.value == "contentPresent"){ //if the message received is the one we sent from our content script 
     chrome.notifications.create({ //create notificacion 
      type:"basic", 
      title:"Error", 
      message:"Error", 
      iconUrl:"logo1.png" 
     }, function(){ 
       console.log("yey"); 
     }); 
    } 
}); 

content.js

if (document.getElementById("content")) { //if the element with id "content" is found... 
     chrome.runtime.sendMessage({value:"contentPresent"}); //send a message to the background script 
} 
+0

спасибо за помощь. Это работает, но я хочу узнать или узнать больше о это так вы можете мне это объяснить? – dionell

+0

@ dionell, если решение работает, тогда я думаю, что у него будет его ответ, касающийся того, как он работает. Это длинная история https://developer.chrome.com/extensions/messaging – Viney

+0

Если сценарий содержимого обнаруживает элемент с идентификатором «content», он [отправляет сообщение] (https://developer.chrome.com/extensions/runtime#method-sendMessage) в фоновый скрипт. Когда фоновый скрипт получает сообщение от сценарий содержимого, он создает уведомление. –

Смежные вопросы