Reputation: 3198
I want to display the notifications using manifest 3, Is there a workaround thats possible than waiting for chrome 91?
As a fix I used data URI, but that doesnt work
chrome.notifications.create(
"1", {
iconUrl: "data:image/png;base64,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",
title: "This should be a notification",
type: "basic",
message: "Notification body",
isClickable: true,
priority: 2,
},
function () { }
);
Upvotes: 0
Views: 425
Reputation: 1507
You could create a tiny library that do some similar to chrome.notification. I had done something similar for progress notifications which Firefox (did|do) not support. I hope this code inspires you. However, I suggest you wait for MV3 to be a little more "mature"
JS:
function myNotif(id, title, body, zIdx, evnt) {
let divL1 = document.createElement("div");
divL1.id = 'myNotif_' + id;
divL1.className = 'myNotifClass';
//X per chiudere
let divL2 = document.createElement("div");
divL2.className = 'myNotifClass_X';
divL2.innerHTML = '<SVG WIDTH="10" HEIGHT="10" viewBox="0 0 20 20"><path stroke-width="3" stroke="black" class="checkmark__check" fill="none" d="M0 0 20 20 M20 0 0 20" /></SVG>';
if (evnt) {
if (evnt._onClose)
divL2.addEventListener('click', function() { evnt._onClose(); document.body.removeChild(this.parentNode) })
else
divL2.addEventListener('click', function() { document.body.removeChild(this.parentNode) })
}
divL1.appendChild(divL2);
//TITOLO
divL2 = document.createElement("div");
divL2.className = 'myNotifClass_title';
divL2.textContent = title;
divL1.appendChild(divL2);
//img & body
divL2 = document.createElement("div");
divL2.className = 'myNotifClass_img_body';
//img
let divL3 = document.createElement("div");
divL3.className = 'myNotifClass_img';
divL2.appendChild(divL3);
//body
divL3 = document.createElement("div");
divL3.className = 'myNotifClass_body';
let divL4 = document.createElement("div");
divL4.className = 'myNotifClass_bodyUp';
let divL5 = document.createElement("div");
divL5.id = 'myNotif_' + id + '_bodyUp_CT';
divL5.className = 'myNotifClass_bodyUp_CT';
divL5.innerHTML = body;
divL4.appendChild(divL5);
divL3.appendChild(divL4);
divL4 = document.createElement("div");
divL4.className = 'myNotifClass_bodyDown';
divL5 = document.createElement("progress");
divL5.id = 'myNotif_' + id + '_Progress';
divL5.value = 0;
divL5.max = 100;
divL4.appendChild(divL5);
divL3.appendChild(divL4);
divL2.appendChild(divL3);
divL1.appendChild(divL2);
divL1.style.zIndex = zIdx;
if (evnt)
if (evnt._onClick)
divL2.addEventListener('click', function() { evnt._onClick() });
document.body.appendChild(divL1)
}
CSS:
progress {
margin:3px 4px;
width:230px;
height:6px;
border-radius:2px
}
progress::-moz-progress-bar {
background-color:#1e90ff;
border-radius:2px
}
.myNotifClass {
font-family:Verdana, Calibri;
position:fixed;
bottom:8px;
right:9px;
width:351px;
height:115px;
background-color:white;
border:1px solid gray;
box-shadow:1px 1px darkgray;
color:black;
}
.myNotifClass .myNotifClass_X {
position:relative;
float:right;
top:5px;
right:8px
}
.myNotifClass .myNotifClass_title {
font-size:12px;
font-weight:bold;
position:relative;
top:7px;
left:8px;
width:316px;
height:14px;
background-color:inherit;
border:0px;
padding:2px;
overflow:hidden
}
.myNotifClass .myNotifClass_img_body {
font-size:12px;
position:relative;
left:8px;
top:7px;
bottom:8px;
width:320px;
height:80px;
background-color:inherit;
border:0px;
padding:0px
}
.myNotifClass .myNotifClass_img_body .myNotifClass_img {
position:inherit;
float:left;
left:0px;
top:0px;
height:100%;
width:80px;
background-image:url('./wait.png');
background-position:center;
background-size:auto;
background-repeat:no-repeat;
background-color:inherit;
margin:0
}
.myNotifClass .myNotifClass_img_body .myNotifClass_body {
position:inherit;
float:right;
right:0px;
height:100%;
width:240px;
background-color:inherit;
margin:0
}
.myNotifClass .myNotifClass_img_body .myNotifClass_body .myNotifClass_bodyUp{
font-size:11px;
height:53px;
line-height:130%;
width: 236px; /*calc(100%-4px);*/
background-color:inherit;
padding:5px 2px 5px 2px;
overflow:hidden;
display:table
}
.myNotifClass .myNotifClass_img_body .myNotifClass_body .myNotifClass_bodyUp .myNotifClass_bodyUp_CT {
display:table-cell;
height:100%;
vertical-align:middle
}
.myNotifClass .myNotifClass_img_body .myNotifClass_body .myNotifClass_bodyDown{
height:17px;
width:100%;
background-color:inherit
}
HTML:
<HTML>
<HEAD>
<LINK TYPE="text/css" REL="stylesheet" HREF="./provaNotifDIV.css">
<SCRIPT SRC="./provaNotifDIV.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
function startProgress() {
var timer = setInterval( function() {
let x = document.getElementById('myNotif_1_Progress');
if (x.value >= 100) {
clearTimeout(timer);
document.getElementById('myNotif_1_bodyUp_CT').textContent = "FATTO!"
}
else {
x.value += 1;
document.getElementById('num').textContent = x.value
}
}, 12)
}
document.addEventListener('DOMContentLoaded', function() {
myNotif(1, 'Trasferimento Indicatori in corso...', '<SPAN ID="num">0</SPAN> su <SPAN ID="denom">100</SPAN> caricati', 100, {'_onClick': function() { alert('click') }, '_onClose': function() {alert('close')} });
startProgress()
})
</SCRIPT>
</HEAD>
<BODY>
Ciao
</BODY>
</HTML>
Upvotes: 1