我正在为我工作的呼叫中心构建一个配套网站/应用程序,它可以做很多方便的事情,包括跟踪休息时间,这就是我遇到问题的地方。
这个“站点”将作为 html 文件存储在用户的计算机上(出于安全原因,我无法将它托管在其他地方),这似乎是问题的核心,因为我正在尝试启用桌面警报。
这是我用于请求通知权限的内容:
document.addEventListener('DOMContentLoaded', function () {
if (!Notification) {
alert('Desktop notifications not available in this browser.');
return;
}
if (Notification.permission !== "granted")
Notification.requestPermission();
});
function notifyMe() {
if (Notification.permission !== "granted")
Notification.requestPermission();
else {
var notification = new Notification('Notification title', {
body: "Notification",
});
}
}
Run Code Online (Sandbox Code Playgroud)
...这是我在另一个线程中找到的。
问题是,作为本地文件,Chrome 永远不会承认它具有权限:我可以单击“批准”或“阻止”,但没有任何反应。如果我手动将“file:///*”添加到 Chrome 允许的站点,它将收到通知(但是,如果我手动添加整个本地地址,则不会)。Edge 会将“文件:”添加到其批准的列表中,但这不起作用且无法编辑。
我可能只是不走运,因为我想通过单击按钮在 Chrome 中获得批准来获得通知(并且它们在 Edge 中根本不起作用)。
有没有办法指定您希望浏览器添加到批准列表中的地址?我可以看到这样做会带来许多潜在的安全问题,但这可能是唯一可以解决此问题的方法。
提前致谢!
我对 JS 还是比较陌生,我正在尝试确定这两个选项中的一个是否比另一个有好处。
我经常使用数组,并希望有一个多功能工具可以在给定的时间用它们做任何我想做的事情。
这是我试图在两者之间做出决定的两个选项:
const arr = {
arrCreate: function(v){
if (!Array.isArray(v)) {
v = [v];
};
return v;
},
arrString: function(v){
v = v.length === 1 ? v.toString() : v;
return v;
},
arrShift: function(v){
if (v.length > 1) {
v.shift();
};
return v;
};
};
var array = arr.arrString(array);
Run Code Online (Sandbox Code Playgroud)
对比
function arr(v,v2){
switch(v2){
case 'array':
if (!Array.isArray(v)) {
v = [v]
};
break;
case 'string':
v = v.length === 1 ? v.toString() : v;
break;
case 'shift': …Run Code Online (Sandbox Code Playgroud)