Javascript 让HTML5通知在延迟后消失?

Javascript 让HTML5通知在延迟后消失?,javascript,html,html5-notifications,Javascript,Html,Html5 Notifications,我想使用HTML5通知,这非常有效 问题是它们永远不会消失 如何设置HTML5通知消失后的延迟?您可以调用.close()方法: var n = new Notification("Hello"); setTimeout(n.close.bind(n), 2000); 有关详细信息,请参阅。通知应具有内置的关闭按钮,否 HTML <a href="#" onclick="return show()">Notify me!</a> JS <script>

我想使用HTML5通知,这非常有效

问题是它们永远不会消失


如何设置HTML5通知消失后的延迟?

您可以调用
.close()
方法:

var n = new Notification("Hello");
setTimeout(n.close.bind(n), 2000);

有关详细信息,请参阅。

通知应具有内置的关闭按钮,否

HTML

<a href="#" onclick="return show()">Notify me!</a>

JS

<script>
        var Notification = window.Notification || window.mozNotification || window.webkitNotification;

        Notification.requestPermission(function (permission) {
            // console.log(permission);
        });

        function show() {
            var instance = new Notification(
                "Hey", {
                    body: "this is a message"
                }
            );

            instance.onclick = function () {
                // Something to do
            };
            instance.onerror = function () {
                // Something to do
            };
            instance.onshow = function () {
                // Something to do
            };
            instance.onclose = function () {
                // Something to do
            };

            return false;
        }
    </script>

var Notification=window.Notification | | | window.mozNotification | | window.webkitNotification;
Notification.requestPermission(函数(权限){
//console.log(权限);
});
函数show(){
var实例=新通知(
“嘿”{
正文:“这是一条信息”
}
);
instance.onclick=函数(){
//有事可做
};
instance.onerror=函数(){
//有事可做
};
instance.onshow=函数(){
//有事可做
};
instance.onclose=函数(){
//有事可做
};
返回false;
}

我认为OP的问题在于,他们希望它只显示一定的时间,不希望用户必须取消它,所以我不确定这段代码如何解决他们的问题。@confile-因此,
n.close()
会用相应的
这个
值调用。我不明白。为什么不直接执行
n.close()
?@confile-您必须传递对该方法的引用。如果您只是传递
n.close
,它将无法正确调用它。调用close方法时,
n
的值将丢失。如果您传递了
n.close()
,那么它将立即执行,而不是稍后当
setTimeout()触发时执行。parens
()
表示现在就执行该函数。没有parens的函数引用是
setTimeout()
以后可以调用的函数引用(这是这里需要的)。@confile-您也可以使用
setTimeout(function(){n.close();},2000),但我显示的版本更紧凑。