Why does a `click` event get triggered on my when I press Enter on it?
I'm only adding a click
event handler on my <button>
.
document.getElementsByTagName("button")[0].addEventListener("click", event => {
event.preventDefault();
console.log("Click:", event);
});
<button>Press <kbd>Enter</kbd> on me</button>
(Demo link)
Nevertheless, when I tab to the button in Firefox, then press Enter, I see the click
event being fired. However, I cannot see this behaviour documented anywhere. Is this standard behaviour, and can I count on it working in all browsers?
javascript html dom accessibility dom-events
|
show 3 more comments
I'm only adding a click
event handler on my <button>
.
document.getElementsByTagName("button")[0].addEventListener("click", event => {
event.preventDefault();
console.log("Click:", event);
});
<button>Press <kbd>Enter</kbd> on me</button>
(Demo link)
Nevertheless, when I tab to the button in Firefox, then press Enter, I see the click
event being fired. However, I cannot see this behaviour documented anywhere. Is this standard behaviour, and can I count on it working in all browsers?
javascript html dom accessibility dom-events
6
Try pressing the space bar when the button is in focus...another surprise..you clicked the button :-)
– Thangadurai
Jan 7 at 11:09
Hehe yeah I got that, left it out for brevity :)
– Vincent
Jan 7 at 11:11
keyboard geeks don't often use the mouse. Many even use vi-like addons to their browsers so that they can surf the web without ever touching their mouse. It's very frustrated when an app don't respond to keyboard events
– phuclv
Jan 7 at 15:01
@phuclv Blind users do everything using the keyboard. Some types of motor impairments also require keyboard access.
– Christophe Strobbe
Jan 7 at 16:19
@ChristopheStrobbe blind doesn't only mean a complete vision lost. Many people with low eyesight do use a mouse with magnifier. And not only those, keyboard inputs are used a lot by other users. For exampletab
to move between form fields, and after filling them people will just pressenter
to submit instead of pressing the submit button with the mouse
– phuclv
Jan 7 at 16:29
|
show 3 more comments
I'm only adding a click
event handler on my <button>
.
document.getElementsByTagName("button")[0].addEventListener("click", event => {
event.preventDefault();
console.log("Click:", event);
});
<button>Press <kbd>Enter</kbd> on me</button>
(Demo link)
Nevertheless, when I tab to the button in Firefox, then press Enter, I see the click
event being fired. However, I cannot see this behaviour documented anywhere. Is this standard behaviour, and can I count on it working in all browsers?
javascript html dom accessibility dom-events
I'm only adding a click
event handler on my <button>
.
document.getElementsByTagName("button")[0].addEventListener("click", event => {
event.preventDefault();
console.log("Click:", event);
});
<button>Press <kbd>Enter</kbd> on me</button>
(Demo link)
Nevertheless, when I tab to the button in Firefox, then press Enter, I see the click
event being fired. However, I cannot see this behaviour documented anywhere. Is this standard behaviour, and can I count on it working in all browsers?
document.getElementsByTagName("button")[0].addEventListener("click", event => {
event.preventDefault();
console.log("Click:", event);
});
<button>Press <kbd>Enter</kbd> on me</button>
document.getElementsByTagName("button")[0].addEventListener("click", event => {
event.preventDefault();
console.log("Click:", event);
});
<button>Press <kbd>Enter</kbd> on me</button>
javascript html dom accessibility dom-events
javascript html dom accessibility dom-events
edited Jan 8 at 5:26
Nisarg Shah
10.7k52040
10.7k52040
asked Jan 7 at 11:03
VincentVincent
1,31211630
1,31211630
6
Try pressing the space bar when the button is in focus...another surprise..you clicked the button :-)
– Thangadurai
Jan 7 at 11:09
Hehe yeah I got that, left it out for brevity :)
– Vincent
Jan 7 at 11:11
keyboard geeks don't often use the mouse. Many even use vi-like addons to their browsers so that they can surf the web without ever touching their mouse. It's very frustrated when an app don't respond to keyboard events
– phuclv
Jan 7 at 15:01
@phuclv Blind users do everything using the keyboard. Some types of motor impairments also require keyboard access.
– Christophe Strobbe
Jan 7 at 16:19
@ChristopheStrobbe blind doesn't only mean a complete vision lost. Many people with low eyesight do use a mouse with magnifier. And not only those, keyboard inputs are used a lot by other users. For exampletab
to move between form fields, and after filling them people will just pressenter
to submit instead of pressing the submit button with the mouse
– phuclv
Jan 7 at 16:29
|
show 3 more comments
6
Try pressing the space bar when the button is in focus...another surprise..you clicked the button :-)
– Thangadurai
Jan 7 at 11:09
Hehe yeah I got that, left it out for brevity :)
– Vincent
Jan 7 at 11:11
keyboard geeks don't often use the mouse. Many even use vi-like addons to their browsers so that they can surf the web without ever touching their mouse. It's very frustrated when an app don't respond to keyboard events
– phuclv
Jan 7 at 15:01
@phuclv Blind users do everything using the keyboard. Some types of motor impairments also require keyboard access.
– Christophe Strobbe
Jan 7 at 16:19
@ChristopheStrobbe blind doesn't only mean a complete vision lost. Many people with low eyesight do use a mouse with magnifier. And not only those, keyboard inputs are used a lot by other users. For exampletab
to move between form fields, and after filling them people will just pressenter
to submit instead of pressing the submit button with the mouse
– phuclv
Jan 7 at 16:29
6
6
Try pressing the space bar when the button is in focus...another surprise..you clicked the button :-)
– Thangadurai
Jan 7 at 11:09
Try pressing the space bar when the button is in focus...another surprise..you clicked the button :-)
– Thangadurai
Jan 7 at 11:09
Hehe yeah I got that, left it out for brevity :)
– Vincent
Jan 7 at 11:11
Hehe yeah I got that, left it out for brevity :)
– Vincent
Jan 7 at 11:11
keyboard geeks don't often use the mouse. Many even use vi-like addons to their browsers so that they can surf the web without ever touching their mouse. It's very frustrated when an app don't respond to keyboard events
– phuclv
Jan 7 at 15:01
keyboard geeks don't often use the mouse. Many even use vi-like addons to their browsers so that they can surf the web without ever touching their mouse. It's very frustrated when an app don't respond to keyboard events
– phuclv
Jan 7 at 15:01
@phuclv Blind users do everything using the keyboard. Some types of motor impairments also require keyboard access.
– Christophe Strobbe
Jan 7 at 16:19
@phuclv Blind users do everything using the keyboard. Some types of motor impairments also require keyboard access.
– Christophe Strobbe
Jan 7 at 16:19
@ChristopheStrobbe blind doesn't only mean a complete vision lost. Many people with low eyesight do use a mouse with magnifier. And not only those, keyboard inputs are used a lot by other users. For example
tab
to move between form fields, and after filling them people will just press enter
to submit instead of pressing the submit button with the mouse– phuclv
Jan 7 at 16:29
@ChristopheStrobbe blind doesn't only mean a complete vision lost. Many people with low eyesight do use a mouse with magnifier. And not only those, keyboard inputs are used a lot by other users. For example
tab
to move between form fields, and after filling them people will just press enter
to submit instead of pressing the submit button with the mouse– phuclv
Jan 7 at 16:29
|
show 3 more comments
3 Answers
3
active
oldest
votes
This is largely because lots of authors have historically written code using click events while forgetting to account for users who don't click (whether because they prefer to use a keyboard to navigate, have a disability which makes it hard to use a pointing device, or whatever other reason).
The behaviour is documented in the HTML specification:
Certain elements in HTML have an activation behavior, which means that the user can activate them. This triggers a sequence of events dependent on the activation mechanism, and normally culminating in a click event, as described below.
…
For accessibility, the keyboard’s Enter and Space keys are often used to trigger an element’s activation behavior.
It then goes on to explain the steps in detail.
That's great, thanks for the reference - I will be relying on that for accessibility then!
– Vincent
Jan 7 at 11:11
It's a very useful mechanism. If you plan to rely on it for accessibility, the caveat is that most elements do not have this default behaviour, so if you're using (say) a div or a span as a control, you'll have to add the key event handling yourself. (Be sure to add a role attribute too!)
– brennanyoung
Jan 7 at 11:47
2
@brennanyoung — And make them keyboard accessible with tabindex … best to use elements designed to be interacted with in the first place!
– Quentin
Jan 7 at 11:51
2
Quite right. You get a lot of accessibility 'for free' with<a>
,<input>
and<button>
, but otherwisetabindex
is just as important. Unfortunately, a11y implementation is far too rarely considered 'in the first place'.
– brennanyoung
Jan 7 at 11:55
1
"This is largely because lots of authors have historically written code using click events while forgetting to account for users who don't click" No it isn't, it was always like that from the very beginning of Javascript.
– Ben
Jan 7 at 17:13
|
show 1 more comment
Because for keyboard users (where a mouse is not available), when a button is in focus and you press Enter (possibly Space as well) it simulates a click event.
This is the browser's accessibility support which most, if not all, browsers provide.
1
"It's part of the ISO" — It isn't … and nobody uses ISO HTML anyway.
– Quentin
Jan 7 at 11:06
@Quentin Removed. You're right, our workplace puts a big importance on the ISO hence the reference.
– Adriani6
Jan 7 at 11:07
Ah sorry, I did not mean "why did they make it this way", but "why did browsers implement this - was it because it was standardised, or because they thought it was a good idea themselves". Apparently the former!
– Vincent
Jan 7 at 11:11
@Vincent – The standard was defined after most browsers had already implemented it.
– Quentin
Jan 7 at 11:12
I see. Well, that's great for me - saves me implementing keypress handlers myself :)
– Vincent
Jan 7 at 11:13
add a comment |
This is documented in WCAG: SCR35: Making actions keyboard accessible by using the onclick event of anchors and buttons:
While
onclick
sounds like it is tied to the mouse, the onclick event is actually mapped to the default action of a link or button. The default action occurs when the user clicks the element with a mouse, but it also occurs when the user focuses the element and hits enter or space, and when the element is triggered via the accessibility API.
This is also stated in UIEVents /click section:
In addition to being associated with pointer devices, the
click event
type MUST be dispatched as part of an element activation, as described in §3.5 Activation triggers and behavior.
The Activation trigggers paragraph states that:
User-initiated activation triggers include clicking a mouse button on an activatable element, pressing the Enter key when an activatable element has focus, or pressing a key that is somehow linked to an activatable element (a hotkey or access key) even when that element does not have focus.
Which means that any of those triggers will dispatch the click
event.
Huh, that first excerpt is interesting - in an earlier test, theclick
event did not get triggered when I bound the listener to an anchor on which I pressed <kbd>Enter</kbd>. See e.g. here: codesandbox.io/s/4r3rl2nrz7?expanddevtools=1
– Vincent
Jan 8 at 13:38
@Vincent In your example, youra
anchor lacks anhref
attribute to make it a link. So thea
tag will have no default action.
– Adam
Jan 8 at 14:28
Ah, right. But then that first excerpt is, I think, about something else: clicking a button (or anchor) activates its default behaviour. Whereas the question was not about what happens when you click the button, but about why theclick
event is triggered when you don't click the button. (Which I think the other two excerpts show.) Anyway, thanks :)
– Vincent
Jan 8 at 14:39
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54073140%2fwhy-does-a-click-event-get-triggered-on-my-button-when-i-press-enter-on-it%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
This is largely because lots of authors have historically written code using click events while forgetting to account for users who don't click (whether because they prefer to use a keyboard to navigate, have a disability which makes it hard to use a pointing device, or whatever other reason).
The behaviour is documented in the HTML specification:
Certain elements in HTML have an activation behavior, which means that the user can activate them. This triggers a sequence of events dependent on the activation mechanism, and normally culminating in a click event, as described below.
…
For accessibility, the keyboard’s Enter and Space keys are often used to trigger an element’s activation behavior.
It then goes on to explain the steps in detail.
That's great, thanks for the reference - I will be relying on that for accessibility then!
– Vincent
Jan 7 at 11:11
It's a very useful mechanism. If you plan to rely on it for accessibility, the caveat is that most elements do not have this default behaviour, so if you're using (say) a div or a span as a control, you'll have to add the key event handling yourself. (Be sure to add a role attribute too!)
– brennanyoung
Jan 7 at 11:47
2
@brennanyoung — And make them keyboard accessible with tabindex … best to use elements designed to be interacted with in the first place!
– Quentin
Jan 7 at 11:51
2
Quite right. You get a lot of accessibility 'for free' with<a>
,<input>
and<button>
, but otherwisetabindex
is just as important. Unfortunately, a11y implementation is far too rarely considered 'in the first place'.
– brennanyoung
Jan 7 at 11:55
1
"This is largely because lots of authors have historically written code using click events while forgetting to account for users who don't click" No it isn't, it was always like that from the very beginning of Javascript.
– Ben
Jan 7 at 17:13
|
show 1 more comment
This is largely because lots of authors have historically written code using click events while forgetting to account for users who don't click (whether because they prefer to use a keyboard to navigate, have a disability which makes it hard to use a pointing device, or whatever other reason).
The behaviour is documented in the HTML specification:
Certain elements in HTML have an activation behavior, which means that the user can activate them. This triggers a sequence of events dependent on the activation mechanism, and normally culminating in a click event, as described below.
…
For accessibility, the keyboard’s Enter and Space keys are often used to trigger an element’s activation behavior.
It then goes on to explain the steps in detail.
That's great, thanks for the reference - I will be relying on that for accessibility then!
– Vincent
Jan 7 at 11:11
It's a very useful mechanism. If you plan to rely on it for accessibility, the caveat is that most elements do not have this default behaviour, so if you're using (say) a div or a span as a control, you'll have to add the key event handling yourself. (Be sure to add a role attribute too!)
– brennanyoung
Jan 7 at 11:47
2
@brennanyoung — And make them keyboard accessible with tabindex … best to use elements designed to be interacted with in the first place!
– Quentin
Jan 7 at 11:51
2
Quite right. You get a lot of accessibility 'for free' with<a>
,<input>
and<button>
, but otherwisetabindex
is just as important. Unfortunately, a11y implementation is far too rarely considered 'in the first place'.
– brennanyoung
Jan 7 at 11:55
1
"This is largely because lots of authors have historically written code using click events while forgetting to account for users who don't click" No it isn't, it was always like that from the very beginning of Javascript.
– Ben
Jan 7 at 17:13
|
show 1 more comment
This is largely because lots of authors have historically written code using click events while forgetting to account for users who don't click (whether because they prefer to use a keyboard to navigate, have a disability which makes it hard to use a pointing device, or whatever other reason).
The behaviour is documented in the HTML specification:
Certain elements in HTML have an activation behavior, which means that the user can activate them. This triggers a sequence of events dependent on the activation mechanism, and normally culminating in a click event, as described below.
…
For accessibility, the keyboard’s Enter and Space keys are often used to trigger an element’s activation behavior.
It then goes on to explain the steps in detail.
This is largely because lots of authors have historically written code using click events while forgetting to account for users who don't click (whether because they prefer to use a keyboard to navigate, have a disability which makes it hard to use a pointing device, or whatever other reason).
The behaviour is documented in the HTML specification:
Certain elements in HTML have an activation behavior, which means that the user can activate them. This triggers a sequence of events dependent on the activation mechanism, and normally culminating in a click event, as described below.
…
For accessibility, the keyboard’s Enter and Space keys are often used to trigger an element’s activation behavior.
It then goes on to explain the steps in detail.
edited Jan 7 at 11:11
answered Jan 7 at 11:09
QuentinQuentin
643k718671037
643k718671037
That's great, thanks for the reference - I will be relying on that for accessibility then!
– Vincent
Jan 7 at 11:11
It's a very useful mechanism. If you plan to rely on it for accessibility, the caveat is that most elements do not have this default behaviour, so if you're using (say) a div or a span as a control, you'll have to add the key event handling yourself. (Be sure to add a role attribute too!)
– brennanyoung
Jan 7 at 11:47
2
@brennanyoung — And make them keyboard accessible with tabindex … best to use elements designed to be interacted with in the first place!
– Quentin
Jan 7 at 11:51
2
Quite right. You get a lot of accessibility 'for free' with<a>
,<input>
and<button>
, but otherwisetabindex
is just as important. Unfortunately, a11y implementation is far too rarely considered 'in the first place'.
– brennanyoung
Jan 7 at 11:55
1
"This is largely because lots of authors have historically written code using click events while forgetting to account for users who don't click" No it isn't, it was always like that from the very beginning of Javascript.
– Ben
Jan 7 at 17:13
|
show 1 more comment
That's great, thanks for the reference - I will be relying on that for accessibility then!
– Vincent
Jan 7 at 11:11
It's a very useful mechanism. If you plan to rely on it for accessibility, the caveat is that most elements do not have this default behaviour, so if you're using (say) a div or a span as a control, you'll have to add the key event handling yourself. (Be sure to add a role attribute too!)
– brennanyoung
Jan 7 at 11:47
2
@brennanyoung — And make them keyboard accessible with tabindex … best to use elements designed to be interacted with in the first place!
– Quentin
Jan 7 at 11:51
2
Quite right. You get a lot of accessibility 'for free' with<a>
,<input>
and<button>
, but otherwisetabindex
is just as important. Unfortunately, a11y implementation is far too rarely considered 'in the first place'.
– brennanyoung
Jan 7 at 11:55
1
"This is largely because lots of authors have historically written code using click events while forgetting to account for users who don't click" No it isn't, it was always like that from the very beginning of Javascript.
– Ben
Jan 7 at 17:13
That's great, thanks for the reference - I will be relying on that for accessibility then!
– Vincent
Jan 7 at 11:11
That's great, thanks for the reference - I will be relying on that for accessibility then!
– Vincent
Jan 7 at 11:11
It's a very useful mechanism. If you plan to rely on it for accessibility, the caveat is that most elements do not have this default behaviour, so if you're using (say) a div or a span as a control, you'll have to add the key event handling yourself. (Be sure to add a role attribute too!)
– brennanyoung
Jan 7 at 11:47
It's a very useful mechanism. If you plan to rely on it for accessibility, the caveat is that most elements do not have this default behaviour, so if you're using (say) a div or a span as a control, you'll have to add the key event handling yourself. (Be sure to add a role attribute too!)
– brennanyoung
Jan 7 at 11:47
2
2
@brennanyoung — And make them keyboard accessible with tabindex … best to use elements designed to be interacted with in the first place!
– Quentin
Jan 7 at 11:51
@brennanyoung — And make them keyboard accessible with tabindex … best to use elements designed to be interacted with in the first place!
– Quentin
Jan 7 at 11:51
2
2
Quite right. You get a lot of accessibility 'for free' with
<a>
, <input>
and <button>
, but otherwise tabindex
is just as important. Unfortunately, a11y implementation is far too rarely considered 'in the first place'.– brennanyoung
Jan 7 at 11:55
Quite right. You get a lot of accessibility 'for free' with
<a>
, <input>
and <button>
, but otherwise tabindex
is just as important. Unfortunately, a11y implementation is far too rarely considered 'in the first place'.– brennanyoung
Jan 7 at 11:55
1
1
"This is largely because lots of authors have historically written code using click events while forgetting to account for users who don't click" No it isn't, it was always like that from the very beginning of Javascript.
– Ben
Jan 7 at 17:13
"This is largely because lots of authors have historically written code using click events while forgetting to account for users who don't click" No it isn't, it was always like that from the very beginning of Javascript.
– Ben
Jan 7 at 17:13
|
show 1 more comment
Because for keyboard users (where a mouse is not available), when a button is in focus and you press Enter (possibly Space as well) it simulates a click event.
This is the browser's accessibility support which most, if not all, browsers provide.
1
"It's part of the ISO" — It isn't … and nobody uses ISO HTML anyway.
– Quentin
Jan 7 at 11:06
@Quentin Removed. You're right, our workplace puts a big importance on the ISO hence the reference.
– Adriani6
Jan 7 at 11:07
Ah sorry, I did not mean "why did they make it this way", but "why did browsers implement this - was it because it was standardised, or because they thought it was a good idea themselves". Apparently the former!
– Vincent
Jan 7 at 11:11
@Vincent – The standard was defined after most browsers had already implemented it.
– Quentin
Jan 7 at 11:12
I see. Well, that's great for me - saves me implementing keypress handlers myself :)
– Vincent
Jan 7 at 11:13
add a comment |
Because for keyboard users (where a mouse is not available), when a button is in focus and you press Enter (possibly Space as well) it simulates a click event.
This is the browser's accessibility support which most, if not all, browsers provide.
1
"It's part of the ISO" — It isn't … and nobody uses ISO HTML anyway.
– Quentin
Jan 7 at 11:06
@Quentin Removed. You're right, our workplace puts a big importance on the ISO hence the reference.
– Adriani6
Jan 7 at 11:07
Ah sorry, I did not mean "why did they make it this way", but "why did browsers implement this - was it because it was standardised, or because they thought it was a good idea themselves". Apparently the former!
– Vincent
Jan 7 at 11:11
@Vincent – The standard was defined after most browsers had already implemented it.
– Quentin
Jan 7 at 11:12
I see. Well, that's great for me - saves me implementing keypress handlers myself :)
– Vincent
Jan 7 at 11:13
add a comment |
Because for keyboard users (where a mouse is not available), when a button is in focus and you press Enter (possibly Space as well) it simulates a click event.
This is the browser's accessibility support which most, if not all, browsers provide.
Because for keyboard users (where a mouse is not available), when a button is in focus and you press Enter (possibly Space as well) it simulates a click event.
This is the browser's accessibility support which most, if not all, browsers provide.
edited Jan 7 at 17:34
Peter Mortensen
13.6k1984111
13.6k1984111
answered Jan 7 at 11:06
Adriani6Adriani6
4,49721527
4,49721527
1
"It's part of the ISO" — It isn't … and nobody uses ISO HTML anyway.
– Quentin
Jan 7 at 11:06
@Quentin Removed. You're right, our workplace puts a big importance on the ISO hence the reference.
– Adriani6
Jan 7 at 11:07
Ah sorry, I did not mean "why did they make it this way", but "why did browsers implement this - was it because it was standardised, or because they thought it was a good idea themselves". Apparently the former!
– Vincent
Jan 7 at 11:11
@Vincent – The standard was defined after most browsers had already implemented it.
– Quentin
Jan 7 at 11:12
I see. Well, that's great for me - saves me implementing keypress handlers myself :)
– Vincent
Jan 7 at 11:13
add a comment |
1
"It's part of the ISO" — It isn't … and nobody uses ISO HTML anyway.
– Quentin
Jan 7 at 11:06
@Quentin Removed. You're right, our workplace puts a big importance on the ISO hence the reference.
– Adriani6
Jan 7 at 11:07
Ah sorry, I did not mean "why did they make it this way", but "why did browsers implement this - was it because it was standardised, or because they thought it was a good idea themselves". Apparently the former!
– Vincent
Jan 7 at 11:11
@Vincent – The standard was defined after most browsers had already implemented it.
– Quentin
Jan 7 at 11:12
I see. Well, that's great for me - saves me implementing keypress handlers myself :)
– Vincent
Jan 7 at 11:13
1
1
"It's part of the ISO" — It isn't … and nobody uses ISO HTML anyway.
– Quentin
Jan 7 at 11:06
"It's part of the ISO" — It isn't … and nobody uses ISO HTML anyway.
– Quentin
Jan 7 at 11:06
@Quentin Removed. You're right, our workplace puts a big importance on the ISO hence the reference.
– Adriani6
Jan 7 at 11:07
@Quentin Removed. You're right, our workplace puts a big importance on the ISO hence the reference.
– Adriani6
Jan 7 at 11:07
Ah sorry, I did not mean "why did they make it this way", but "why did browsers implement this - was it because it was standardised, or because they thought it was a good idea themselves". Apparently the former!
– Vincent
Jan 7 at 11:11
Ah sorry, I did not mean "why did they make it this way", but "why did browsers implement this - was it because it was standardised, or because they thought it was a good idea themselves". Apparently the former!
– Vincent
Jan 7 at 11:11
@Vincent – The standard was defined after most browsers had already implemented it.
– Quentin
Jan 7 at 11:12
@Vincent – The standard was defined after most browsers had already implemented it.
– Quentin
Jan 7 at 11:12
I see. Well, that's great for me - saves me implementing keypress handlers myself :)
– Vincent
Jan 7 at 11:13
I see. Well, that's great for me - saves me implementing keypress handlers myself :)
– Vincent
Jan 7 at 11:13
add a comment |
This is documented in WCAG: SCR35: Making actions keyboard accessible by using the onclick event of anchors and buttons:
While
onclick
sounds like it is tied to the mouse, the onclick event is actually mapped to the default action of a link or button. The default action occurs when the user clicks the element with a mouse, but it also occurs when the user focuses the element and hits enter or space, and when the element is triggered via the accessibility API.
This is also stated in UIEVents /click section:
In addition to being associated with pointer devices, the
click event
type MUST be dispatched as part of an element activation, as described in §3.5 Activation triggers and behavior.
The Activation trigggers paragraph states that:
User-initiated activation triggers include clicking a mouse button on an activatable element, pressing the Enter key when an activatable element has focus, or pressing a key that is somehow linked to an activatable element (a hotkey or access key) even when that element does not have focus.
Which means that any of those triggers will dispatch the click
event.
Huh, that first excerpt is interesting - in an earlier test, theclick
event did not get triggered when I bound the listener to an anchor on which I pressed <kbd>Enter</kbd>. See e.g. here: codesandbox.io/s/4r3rl2nrz7?expanddevtools=1
– Vincent
Jan 8 at 13:38
@Vincent In your example, youra
anchor lacks anhref
attribute to make it a link. So thea
tag will have no default action.
– Adam
Jan 8 at 14:28
Ah, right. But then that first excerpt is, I think, about something else: clicking a button (or anchor) activates its default behaviour. Whereas the question was not about what happens when you click the button, but about why theclick
event is triggered when you don't click the button. (Which I think the other two excerpts show.) Anyway, thanks :)
– Vincent
Jan 8 at 14:39
add a comment |
This is documented in WCAG: SCR35: Making actions keyboard accessible by using the onclick event of anchors and buttons:
While
onclick
sounds like it is tied to the mouse, the onclick event is actually mapped to the default action of a link or button. The default action occurs when the user clicks the element with a mouse, but it also occurs when the user focuses the element and hits enter or space, and when the element is triggered via the accessibility API.
This is also stated in UIEVents /click section:
In addition to being associated with pointer devices, the
click event
type MUST be dispatched as part of an element activation, as described in §3.5 Activation triggers and behavior.
The Activation trigggers paragraph states that:
User-initiated activation triggers include clicking a mouse button on an activatable element, pressing the Enter key when an activatable element has focus, or pressing a key that is somehow linked to an activatable element (a hotkey or access key) even when that element does not have focus.
Which means that any of those triggers will dispatch the click
event.
Huh, that first excerpt is interesting - in an earlier test, theclick
event did not get triggered when I bound the listener to an anchor on which I pressed <kbd>Enter</kbd>. See e.g. here: codesandbox.io/s/4r3rl2nrz7?expanddevtools=1
– Vincent
Jan 8 at 13:38
@Vincent In your example, youra
anchor lacks anhref
attribute to make it a link. So thea
tag will have no default action.
– Adam
Jan 8 at 14:28
Ah, right. But then that first excerpt is, I think, about something else: clicking a button (or anchor) activates its default behaviour. Whereas the question was not about what happens when you click the button, but about why theclick
event is triggered when you don't click the button. (Which I think the other two excerpts show.) Anyway, thanks :)
– Vincent
Jan 8 at 14:39
add a comment |
This is documented in WCAG: SCR35: Making actions keyboard accessible by using the onclick event of anchors and buttons:
While
onclick
sounds like it is tied to the mouse, the onclick event is actually mapped to the default action of a link or button. The default action occurs when the user clicks the element with a mouse, but it also occurs when the user focuses the element and hits enter or space, and when the element is triggered via the accessibility API.
This is also stated in UIEVents /click section:
In addition to being associated with pointer devices, the
click event
type MUST be dispatched as part of an element activation, as described in §3.5 Activation triggers and behavior.
The Activation trigggers paragraph states that:
User-initiated activation triggers include clicking a mouse button on an activatable element, pressing the Enter key when an activatable element has focus, or pressing a key that is somehow linked to an activatable element (a hotkey or access key) even when that element does not have focus.
Which means that any of those triggers will dispatch the click
event.
This is documented in WCAG: SCR35: Making actions keyboard accessible by using the onclick event of anchors and buttons:
While
onclick
sounds like it is tied to the mouse, the onclick event is actually mapped to the default action of a link or button. The default action occurs when the user clicks the element with a mouse, but it also occurs when the user focuses the element and hits enter or space, and when the element is triggered via the accessibility API.
This is also stated in UIEVents /click section:
In addition to being associated with pointer devices, the
click event
type MUST be dispatched as part of an element activation, as described in §3.5 Activation triggers and behavior.
The Activation trigggers paragraph states that:
User-initiated activation triggers include clicking a mouse button on an activatable element, pressing the Enter key when an activatable element has focus, or pressing a key that is somehow linked to an activatable element (a hotkey or access key) even when that element does not have focus.
Which means that any of those triggers will dispatch the click
event.
edited Jan 7 at 17:36
Peter Mortensen
13.6k1984111
13.6k1984111
answered Jan 7 at 15:34
AdamAdam
11.9k1635
11.9k1635
Huh, that first excerpt is interesting - in an earlier test, theclick
event did not get triggered when I bound the listener to an anchor on which I pressed <kbd>Enter</kbd>. See e.g. here: codesandbox.io/s/4r3rl2nrz7?expanddevtools=1
– Vincent
Jan 8 at 13:38
@Vincent In your example, youra
anchor lacks anhref
attribute to make it a link. So thea
tag will have no default action.
– Adam
Jan 8 at 14:28
Ah, right. But then that first excerpt is, I think, about something else: clicking a button (or anchor) activates its default behaviour. Whereas the question was not about what happens when you click the button, but about why theclick
event is triggered when you don't click the button. (Which I think the other two excerpts show.) Anyway, thanks :)
– Vincent
Jan 8 at 14:39
add a comment |
Huh, that first excerpt is interesting - in an earlier test, theclick
event did not get triggered when I bound the listener to an anchor on which I pressed <kbd>Enter</kbd>. See e.g. here: codesandbox.io/s/4r3rl2nrz7?expanddevtools=1
– Vincent
Jan 8 at 13:38
@Vincent In your example, youra
anchor lacks anhref
attribute to make it a link. So thea
tag will have no default action.
– Adam
Jan 8 at 14:28
Ah, right. But then that first excerpt is, I think, about something else: clicking a button (or anchor) activates its default behaviour. Whereas the question was not about what happens when you click the button, but about why theclick
event is triggered when you don't click the button. (Which I think the other two excerpts show.) Anyway, thanks :)
– Vincent
Jan 8 at 14:39
Huh, that first excerpt is interesting - in an earlier test, the
click
event did not get triggered when I bound the listener to an anchor on which I pressed <kbd>Enter</kbd>. See e.g. here: codesandbox.io/s/4r3rl2nrz7?expanddevtools=1– Vincent
Jan 8 at 13:38
Huh, that first excerpt is interesting - in an earlier test, the
click
event did not get triggered when I bound the listener to an anchor on which I pressed <kbd>Enter</kbd>. See e.g. here: codesandbox.io/s/4r3rl2nrz7?expanddevtools=1– Vincent
Jan 8 at 13:38
@Vincent In your example, your
a
anchor lacks an href
attribute to make it a link. So the a
tag will have no default action.– Adam
Jan 8 at 14:28
@Vincent In your example, your
a
anchor lacks an href
attribute to make it a link. So the a
tag will have no default action.– Adam
Jan 8 at 14:28
Ah, right. But then that first excerpt is, I think, about something else: clicking a button (or anchor) activates its default behaviour. Whereas the question was not about what happens when you click the button, but about why the
click
event is triggered when you don't click the button. (Which I think the other two excerpts show.) Anyway, thanks :)– Vincent
Jan 8 at 14:39
Ah, right. But then that first excerpt is, I think, about something else: clicking a button (or anchor) activates its default behaviour. Whereas the question was not about what happens when you click the button, but about why the
click
event is triggered when you don't click the button. (Which I think the other two excerpts show.) Anyway, thanks :)– Vincent
Jan 8 at 14:39
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54073140%2fwhy-does-a-click-event-get-triggered-on-my-button-when-i-press-enter-on-it%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
6
Try pressing the space bar when the button is in focus...another surprise..you clicked the button :-)
– Thangadurai
Jan 7 at 11:09
Hehe yeah I got that, left it out for brevity :)
– Vincent
Jan 7 at 11:11
keyboard geeks don't often use the mouse. Many even use vi-like addons to their browsers so that they can surf the web without ever touching their mouse. It's very frustrated when an app don't respond to keyboard events
– phuclv
Jan 7 at 15:01
@phuclv Blind users do everything using the keyboard. Some types of motor impairments also require keyboard access.
– Christophe Strobbe
Jan 7 at 16:19
@ChristopheStrobbe blind doesn't only mean a complete vision lost. Many people with low eyesight do use a mouse with magnifier. And not only those, keyboard inputs are used a lot by other users. For example
tab
to move between form fields, and after filling them people will just pressenter
to submit instead of pressing the submit button with the mouse– phuclv
Jan 7 at 16:29