#javascript #google-chrome-extension #notifications
#javascript #google-chrome-расширение #уведомления
Вопрос:
Я не могу запустить уведомление из моего расширения Chrome. Я знаю, что мы не можем запустить его непосредственно из скрипта содержимого, по этой причине у меня есть код уведомления в background.js файл. Но это все еще не работает. Мне нужна ваша помощь в выяснении того, как отображать уведомления из расширения Chrome.
Скрипт содержимого:
{
"name": "test",
"version": "0.0.1",
"manifest_version": 2,
"description": "xdsfds",
"author": "Miraj",
"background": {
"scripts" : ["background.js"],
"persistent" : false
},
"content_scripts": [
{
"matches": ["https://google.com/*","file:///*/Desktop/extensionPage.html"],
"js": ["/js/lib/jquery-3.1.1.min.js",
"/js/lib/bootstrap.min.js",
"/js/lib/angular.min.js",
"/js/lib/idbstore.js",
"/js/contentScript.js",
"/js/angJs/main.js",
"/js/angJs/communiqueService.js",
"/js/angJs/commTrackerDir.js"],
"css": ["/css/sforce.css",
"/css/main.css"]
}
],
"web_accessible_resources": [
"/templates/*"
],
"permissions": [
"cookies",
"unlimitedStorage",
"notifications"
]
}
Background.js
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
alert('i am listening'); //this is getting invoked
var opt = {
type: "basic",
title: "Primary Title",
message: "Primary message to display",
iconUrl: '/images/notification.png'
};
chrome.notifications.create(new Date().getTime(), opt, function(rs){
alert(rs);
});
sendResponse({returnMsg: "All good!"}); // optional response
});
ContentScript.js
chrome.extension.sendMessage({msg: "Sup?"}, function(response) {
// optional callback - gets response
console.log(response);
});
Комментарии:
1. Вы подтвердили, что ваше уведомление срабатывает, когда оно находится вне
extension.onMessage
прослушивателя? Что вы видите в консоли фоновой страницы расширения?2. Почему вы используете
chrome.extension.onMessage
/sendMessage
? Я бы ожидал, что вы будете использоватьchrome.runtime.onMessage
.
Ответ №1:
Первым аргументом для chrome.notifications.create
должна быть строка. new Date().getTime()
возвращает целое число. Вы могли бы использовать "" new Date().getTime()
для преобразования его в строку.