diff --git a/content/html/content/src/nsHTMLButtonElement.cpp b/content/html/content/src/nsHTMLButtonElement.cpp
index a48d2b592755..09ae8b5619af 100644
--- a/content/html/content/src/nsHTMLButtonElement.cpp
+++ b/content/html/content/src/nsHTMLButtonElement.cpp
@@ -387,12 +387,13 @@ nsHTMLButtonElement::HandleDOMEvent(nsIPresContext* aPresContext,
switch (aEvent->message) {
case NS_KEY_PRESS:
+ case NS_KEY_UP:
{
// For backwards compat, trigger buttons with space or enter
// (bug 25300)
nsKeyEvent * keyEvent = (nsKeyEvent *)aEvent;
- if (keyEvent->keyCode == NS_VK_RETURN ||
- keyEvent->charCode == NS_VK_SPACE) {
+ if ((keyEvent->keyCode == NS_VK_RETURN && NS_KEY_PRESS == aEvent->message) ||
+ keyEvent->keyCode == NS_VK_SPACE && NS_KEY_UP == aEvent->message) {
nsEventStatus status = nsEventStatus_eIgnore;
nsMouseEvent event;
event.eventStructType = NS_MOUSE_EVENT;
diff --git a/layout/html/content/src/nsHTMLButtonElement.cpp b/layout/html/content/src/nsHTMLButtonElement.cpp
index a48d2b592755..09ae8b5619af 100644
--- a/layout/html/content/src/nsHTMLButtonElement.cpp
+++ b/layout/html/content/src/nsHTMLButtonElement.cpp
@@ -387,12 +387,13 @@ nsHTMLButtonElement::HandleDOMEvent(nsIPresContext* aPresContext,
switch (aEvent->message) {
case NS_KEY_PRESS:
+ case NS_KEY_UP:
{
// For backwards compat, trigger buttons with space or enter
// (bug 25300)
nsKeyEvent * keyEvent = (nsKeyEvent *)aEvent;
- if (keyEvent->keyCode == NS_VK_RETURN ||
- keyEvent->charCode == NS_VK_SPACE) {
+ if ((keyEvent->keyCode == NS_VK_RETURN && NS_KEY_PRESS == aEvent->message) ||
+ keyEvent->keyCode == NS_VK_SPACE && NS_KEY_UP == aEvent->message) {
nsEventStatus status = nsEventStatus_eIgnore;
nsMouseEvent event;
event.eventStructType = NS_MOUSE_EVENT;