diff --git a/core/modules/contextual/css/contextual.theme.css b/core/modules/contextual/css/contextual.theme.css
index be6d44a..9121112 100644
--- a/core/modules/contextual/css/contextual.theme.css
+++ b/core/modules/contextual/css/contextual.theme.css
@@ -89,7 +89,7 @@
   padding: 0;
   line-height: 100%;
 }
-.contextual-region .contextual .contextual-links a {
+.contextual-region .contextual .contextual-links button {
   background-color: #fff;
   /* This is an unfortunately necessary use of !important to prevent white
    * links on a white background or some similar illegible combination. */
@@ -101,8 +101,8 @@
   margin: 0.25em 0;
   padding: 0.4em 0.6em;
 }
-.contextual-region .contextual .contextual-links a,
-.contextual-region .contextual .contextual-links a:hover {
+.contextual-region .contextual .contextual-links button,
+.contextual-region .contextual .contextual-links button:hover {
   text-decoration: none;
 }
 .no-touch .contextual-region .contextual .contextual-links li a:hover {
diff --git a/core/modules/edit/js/edit.js b/core/modules/edit/js/edit.js
index 498865e..33d16d3 100644
--- a/core/modules/edit/js/edit.js
+++ b/core/modules/edit/js/edit.js
@@ -386,7 +386,7 @@ function initializeEntityContextualLink (contextualLink) {
     loadMissingEditors(function () {
       var $links = $(contextualLink.el).find('.contextual-links');
       var contextualLinkView = new Drupal.edit.ContextualLinkView($.extend({
-        el: $('<li class="quick-edit"><a href=""></a></li>').prependTo($links),
+        el: $('<li class="quick-edit"><button></button></li>').prependTo($links),
         model: entityModel,
         appModel: Drupal.edit.app.model
       }, options));
diff --git a/core/modules/edit/js/views/ContextualLinkView.js b/core/modules/edit/js/views/ContextualLinkView.js
index 2b48b46..24050a5 100644
--- a/core/modules/edit/js/views/ContextualLinkView.js
+++ b/core/modules/edit/js/views/ContextualLinkView.js
@@ -34,7 +34,7 @@ Drupal.edit.ContextualLinkView = Backbone.View.extend({
    */
   initialize: function (options) {
     // Insert the text of the quick edit toggle.
-    this.$el.find('a').text(this.options.strings.quickEdit);
+    this.$el.find('button').text(this.options.strings.quickEdit);
     // Initial render.
     this.render();
     // Re-render whenever this entity's isActive attribute changes.
