我当前正在尝试使我的复选框显示一个弹出窗口,用于浏览器通知(如果已选中)。如果用户取消选中它,浏览器通知将弹出,反之亦然。
这是我目前正在尝试的内容的摘要,但它不起作用。
if(checkbox_id == (queue_notification)) {
if(checkbox_state) {
$('input#user_hop_queue_notification').is(':checked') == '1'
if(Notification.requestPermissionre !== "granted"){
Notification.requestPermission(function(status) {
console.log('Notification permission status:', status);
});
}
}
else {
$('input#user_hop_queue_notification').is(':checked')== ('0');
if(Notification.requestPermission !== "denied"){
Notification.requestPermission(function(status) {
console.log('Notification permission status:', status);
});
}
}
}
答案 0 :(得分:0)
public class PolyMor extends Audi {
public static void main(String args[]) {
Car car = new Audi();
car.carName();
car.first();
}
}
Api是用户也可以拒绝的东西,因此即使您将Notification
属性设置为Notification.permission
也无法使用。因此,您最好的机会是使用granted
方法并检查用户是否已授予通知访问权限,然后使用通知API来显示通知。谢谢。
答案 1 :(得分:0)
您的代码看起来很奇怪,您似乎在测试is(':checked')
的值,但实际上却没有(没有if
语句?)。有一个变量checkbox_state
已测试但未设置?并且,您似乎正在测试is(':checked')
的值是否返回字符串0
或1
。在这种情况下,如果您在控制台中手动进行测试或查看文档,您会看到它返回true
或false
,这样也可以使您的代码更简单。
所以我将如下编写您的代码:
if(checkbox_id == (queue_notification)) {
checkbox_state = $('input#user_hop_queue_notification').is(':checked');
if(checkbox_state) {
if(Notification.requestPermissionre !== "granted"){
Notification.requestPermission(function(status) {
console.log('Notification permission status:', status);
});
}
} else {
if(Notification.requestPermission !== "denied"){
Notification.requestPermission(function(status) {
console.log('Notification permission status:', status);
});
}
}
}
如果我正确理解了您的意图,这应该会按预期工作。我们可以将check_state
变量重构掉,因为我们不再使用它了(但是现在我想与您的原始代码保持更近的距离)(它可能仍会提高可读性,因此这是保留它的一个很好的理由它,但是is(:checked)
本身就很不言自明了。
如果您尝试设置已检查状态,则应使用以下代码:
$('input#user_hop_queue_notification').prop('checked', true);
(如果不明显,则true会“选中”复选框,false会取消选中)。