Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JavaScript notifications onclick event

as soon as Notification instantiates onclick function fires but I want prevent this event before actual click occures on notification

   var message = new Notification("RandomString");
   message.onclick(alert("Random Message"))
like image 330
brocode Avatar asked Feb 09 '26 18:02

brocode


2 Answers

Try this:

var message = new Notification("RandomString");
message.onclick = function(){alert("Random Message")};
like image 173
Emilio Rodriguez Avatar answered Feb 13 '26 14:02

Emilio Rodriguez


I'm going to break this down a little bit to make it more clear what your code is doing.

message.onclick() will invoke the onclick property of message, which is probably currently null and therefore can't be called as a function.

Inside of the () you have alert("Random Message"), which is going to be called right then. This means that the value of that function call will be passed in to the onclick function call as a parameter. alert() doesn't return anything, so the alert fires, then you're left with this:

message.onclick('undefined')

What you wanted to do was make onclick a function and have it call the alert.

message.onclick = function() {
  alert("Random Message")
};

Now you can fire that function by clicking the element it is attached to, or you can still fire it directly with message.onclick().

The best practice now is to use addEventListener rather than onclick. addEventListener will allow you to register multiple events of the same type.

message.addEventListener('click', function() {
  alert("Random Message");
});

Another thing that newer programmers often don't realize is that you don't have to make the function while attaching it as the event listener. Here's an example using both methods:

function foo() {
  alert("Random Message");
}

message.onclick = foo;

message.addEventListener('click', foo);
like image 26
m59 Avatar answered Feb 13 '26 14:02

m59



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!