diff --git a/Build/Sources/TypeScript/beuser/Resources/Public/TypeScript/Permissions.ts b/Build/Sources/TypeScript/beuser/Resources/Public/TypeScript/Permissions.ts
index 7e1645957dc5a20ee2927345051d03375f07c8c3..05a22c1451f65d439932ccbec47b4434a784b1cc 100644
--- a/Build/Sources/TypeScript/beuser/Resources/Public/TypeScript/Permissions.ts
+++ b/Build/Sources/TypeScript/beuser/Resources/Public/TypeScript/Permissions.ts
@@ -43,13 +43,14 @@ class Permissions {
     let span = document.createElement('span');
     span.id = `o_${page}`;
 
-    let aSelector = document.createElement('a');
-    aSelector.classList.add('ug_selector', 'changeowner');
-    aSelector.setAttribute('data-page', page);
-    aSelector.setAttribute('data-owner', element.dataset.owner);
-    aSelector.setAttribute('data-username', username);
-    aSelector.innerHTML = usernameHtml;
-    span.appendChild(aSelector);
+    let buttonSelector = document.createElement('button');
+    buttonSelector.classList.add('ug_selector', 'changeowner', 'btn', 'btn-link');
+    buttonSelector.setAttribute('type', 'button');
+    buttonSelector.setAttribute('data-page', page);
+    buttonSelector.setAttribute('data-owner', element.dataset.owner);
+    buttonSelector.setAttribute('data-username', username);
+    buttonSelector.innerHTML = usernameHtml;
+    span.appendChild(buttonSelector);
 
     // Replace content
     const container = document.getElementById('o_' + page);
@@ -74,13 +75,14 @@ class Permissions {
     let span = document.createElement('span');
     span.id = `g_${page}`;
 
-    let aSelector = document.createElement('a');
-    aSelector.classList.add('ug_selector', 'changegroup');
-    aSelector.setAttribute('data-page', page);
-    aSelector.setAttribute('data-group-id', element.dataset.groupId);
-    aSelector.setAttribute('data-groupname', groupname);
-    aSelector.innerHTML = groupnameHtml;
-    span.appendChild(aSelector);
+    let buttonSelector = document.createElement('button');
+    buttonSelector.classList.add('ug_selector', 'changegroup', 'btn', 'btn-link');
+    buttonSelector.setAttribute('type', 'button');
+    buttonSelector.setAttribute('data-page', page);
+    buttonSelector.setAttribute('data-group-id', element.dataset.groupId);
+    buttonSelector.setAttribute('data-groupname', groupname);
+    buttonSelector.innerHTML = groupnameHtml;
+    span.appendChild(buttonSelector);
 
     // Replace content
     const container = document.getElementById('g_' + page);
diff --git a/typo3/sysext/beuser/Classes/Controller/PermissionAjaxController.php b/typo3/sysext/beuser/Classes/Controller/PermissionAjaxController.php
index f8eace3fa86bcb51d031359f844b1f5246dae003..6d803a80db8256322c052da74eecda0d5aa6131c 100644
--- a/typo3/sysext/beuser/Classes/Controller/PermissionAjaxController.php
+++ b/typo3/sysext/beuser/Classes/Controller/PermissionAjaxController.php
@@ -201,16 +201,16 @@ class PermissionAjaxController
         $elementId = 'o_' . $page;
         $options = '<option value="0"></option>' . $options;
         $selector = '<select name="new_page_owner" id="new_page_owner">' . $options . '</select>';
-        $saveButton = '<a class="saveowner btn btn-default" data-page="' . $page . '" data-owner="' . $ownerUid
-                        . '" data-element-id="' . $elementId . '" title="Change owner">'
+        $saveButton = '<button class="saveowner btn btn-default" data-page="' . $page . '" data-owner="' . $ownerUid
+                        . '" data-element-id="' . $elementId . '" title="Change owner" type="button">'
                         . $this->iconFactory->getIcon('actions-document-save', Icon::SIZE_SMALL)->render()
-                        . '</a>';
-        $cancelButton = '<a class="restoreowner btn btn-default" data-page="' . $page . '"  data-owner="' . $ownerUid
+                        . '</button>';
+        $cancelButton = '<button class="restoreowner btn btn-default" data-page="' . $page . '"  data-owner="' . $ownerUid
                         . '" data-element-id="' . $elementId . '"'
                         . (!empty($username) ? ' data-username="' . htmlspecialchars($username) . '"' : '')
-                        . ' title="Cancel">'
+                        . ' title="Cancel" type="button">'
                         . $this->iconFactory->getIcon('actions-close', Icon::SIZE_SMALL)->render()
-                        . '</a>';
+                        . '</button>';
         return '<span id="' . $elementId . '">'
             . $selector
             . '<span class="btn-group">'
@@ -258,16 +258,16 @@ class PermissionAjaxController
         $elementId = 'g_' . $page;
         $options = '<option value="0"></option>' . $options;
         $selector = '<select name="new_page_group" id="new_page_group">' . $options . '</select>';
-        $saveButton = '<a class="savegroup btn btn-default" data-page="' . $page . '" data-group-id="' . $groupUid
-                        . '" data-element-id="' . $elementId . '" title="Change group">'
+        $saveButton = '<button class="savegroup btn btn-default" data-page="' . $page . '" data-group-id="' . $groupUid
+                        . '" data-element-id="' . $elementId . '" title="Change group" type="button">'
                         . $this->iconFactory->getIcon('actions-document-save', Icon::SIZE_SMALL)->render()
-                        . '</a>';
-        $cancelButton = '<a class="restoregroup btn btn-default" data-page="' . $page . '" data-group-id="' . $groupUid
+                        . '</button>';
+        $cancelButton = '<button class="restoregroup btn btn-default" data-page="' . $page . '" data-group-id="' . $groupUid
                         . '" data-element-id="' . $elementId . '"'
                         . (!empty($groupname) ? ' data-groupname="' . htmlspecialchars($groupname) . '"' : '')
-                        . ' title="Cancel">'
+                        . ' title="Cancel" type="button">'
                         . $this->iconFactory->getIcon('actions-close', Icon::SIZE_SMALL)->render()
-                        . '</a>';
+                        . '</button>';
         return '<span id="' . $elementId . '">'
             . $selector
             . '<span class="btn-group">'
@@ -288,13 +288,13 @@ class PermissionAjaxController
     {
         $page = (int)$page;
         if ($editLockState === 1) {
-            $ret = '<span id="el_' . $page . '"><a class="editlock btn btn-default" data-page="' . $page
+            $ret = '<span id="el_' . $page . '"><button type="button" class="editlock btn btn-default" data-page="' . $page
                     . '" data-lockstate="1" title="The page and all content is locked for editing by all non-Admin users.">'
-                    . $this->iconFactory->getIcon('actions-lock', Icon::SIZE_SMALL)->render() . '</a></span>';
+                    . $this->iconFactory->getIcon('actions-lock', Icon::SIZE_SMALL)->render() . '</button></span>';
         } else {
-            $ret = '<span id="el_' . $page . '"><a class="editlock btn btn-default" data-page="' . $page .
+            $ret = '<span id="el_' . $page . '"><button type="button" class="editlock btn btn-default" data-page="' . $page .
                     '" data-lockstate="0" title="Enable the &raquo;Admin-only&laquo; edit lock for this page">'
-                    . $this->iconFactory->getIcon('actions-unlock', Icon::SIZE_SMALL)->render() . '</a></span>';
+                    . $this->iconFactory->getIcon('actions-unlock', Icon::SIZE_SMALL)->render() . '</button></span>';
         }
         return $ret;
     }
diff --git a/typo3/sysext/beuser/Resources/Private/Partials/Permission/Groupname.html b/typo3/sysext/beuser/Resources/Private/Partials/Permission/Groupname.html
index a85c84bbbaa1ecfd2e31b2464a77ac26bb7e6f08..0a444c6cad311e802de7587cf00c90c4dcf451b5 100644
--- a/typo3/sysext/beuser/Resources/Private/Partials/Permission/Groupname.html
+++ b/typo3/sysext/beuser/Resources/Private/Partials/Permission/Groupname.html
@@ -1,6 +1,7 @@
 <span id="g_{pageId}">
-    <a
-        class="ug_selector changegroup"
+    <button
+        type="button"
+        class="ug_selector changegroup btn btn-link"
         data-page="{pageId}"
         data-group-id="{groupId}"
         data-groupname="{groupname}"
@@ -34,5 +35,5 @@
                 </f:if>
             </f:else>
         </f:if>
-    </a>
+    </button>
 </span>
diff --git a/typo3/sysext/beuser/Resources/Private/Partials/Permission/Ownername.html b/typo3/sysext/beuser/Resources/Private/Partials/Permission/Ownername.html
index 5e1c044aa0dc0b856ab3c33072f2c4c4125fbbf6..687e343c33a97441e1496250776e8bd93df9dc77 100644
--- a/typo3/sysext/beuser/Resources/Private/Partials/Permission/Ownername.html
+++ b/typo3/sysext/beuser/Resources/Private/Partials/Permission/Ownername.html
@@ -1,7 +1,8 @@
 {namespace be=TYPO3\CMS\Backend\ViewHelpers}
 <span id="o_{pageId}">
-    <a
-        class="ug_selector changeowner"
+    <button
+        type="button"
+        class="ug_selector changeowner btn btn-link"
         data-page="{pageId}"
         data-owner="{userId}"
         data-username="{username}"
@@ -35,5 +36,5 @@
                 </f:if>
             </f:else>
         </f:if>
-    </a>
+    </button>
 </span>
diff --git a/typo3/sysext/beuser/Resources/Private/Templates/Permission/Index.html b/typo3/sysext/beuser/Resources/Private/Templates/Permission/Index.html
index 0704877c2fad2d102a3dbd3cfb606633e966f014..1778d773bc0bbe57992320d5b686d8d5ccb962ec 100644
--- a/typo3/sysext/beuser/Resources/Private/Templates/Permission/Index.html
+++ b/typo3/sysext/beuser/Resources/Private/Templates/Permission/Index.html
@@ -91,24 +91,26 @@
                                     <span id="el_{data.row.uid}">
                                         <f:if condition="{data.row.editlock}">
                                             <f:then>
-                                                <a
+                                                <button
+                                                    type="button"
                                                     class="editlock btn btn-default"
                                                     data-page="{data.row.uid}"
                                                     data-lockstate="1"
                                                     title="{f:translate(key: 'LLL:EXT:beuser/Resources/Private/Language/locallang_mod_permission.xlf:EditLock_descr')}"
                                                 >
                                                     <core:icon identifier="actions-lock" />
-                                                </a>
+                                                </button>
                                             </f:then>
                                             <f:else>
-                                                <a
+                                                <button
+                                                    type="button"
                                                     class="editlock btn btn-default"
                                                     data-page="{data.row.uid}"
                                                     data-lockstate="0"
                                                     title="{f:translate(key: 'LLL:EXT:beuser/Resources/Private/Language/locallang_mod_permission.xlf:EditLock_descr2')}"
                                                 >
                                                     <core:icon identifier="actions-unlock" />
-                                                </a>
+                                                </button>
                                             </f:else>
                                         </f:if>
                                     </span>
diff --git a/typo3/sysext/beuser/Resources/Public/JavaScript/Permissions.js b/typo3/sysext/beuser/Resources/Public/JavaScript/Permissions.js
index 5b9a1fc35569f16242cff5cfb0166f21df995491..7d52476e9623a11485cf8d65cb7a4aca8389e015 100644
--- a/typo3/sysext/beuser/Resources/Public/JavaScript/Permissions.js
+++ b/typo3/sysext/beuser/Resources/Public/JavaScript/Permissions.js
@@ -10,4 +10,4 @@
  *
  * The TYPO3 project - inspiring people to share!
  */
-var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};define(["require","exports","TYPO3/CMS/Core/Event/RegularEvent","TYPO3/CMS/Core/Ajax/AjaxRequest","TYPO3/CMS/Backend/Tooltip"],(function(e,t,a,o,s){"use strict";a=__importDefault(a);class n{constructor(){this.options={containerSelector:"#typo3-permissionList",editControllerSelector:"#PermissionControllerEdit"},this.ajaxUrl=TYPO3.settings.ajaxUrls.user_access_permissions,this.initializeCheckboxGroups(),this.initializeEvents()}static restoreOwner(e){let t=e.dataset.page,a=e.dataset.username,o=a;void 0===a&&(a="[not set]",o=`<span class="not_set">${a}</span>`);let s=document.createElement("span");s.id="o_"+t;let n=document.createElement("a");n.classList.add("ug_selector","changeowner"),n.setAttribute("data-page",t),n.setAttribute("data-owner",e.dataset.owner),n.setAttribute("data-username",a),n.innerHTML=o,s.appendChild(n);const r=document.getElementById("o_"+t);for(;r.firstChild;)r.firstChild.remove();r.appendChild(s)}static restoreGroup(e){let t=e.dataset.page,a=e.dataset.groupname,o=a;void 0===a&&(a="[not set]",o=`<span class="not_set">${a}</span>`);let s=document.createElement("span");s.id="g_"+t;let n=document.createElement("a");n.classList.add("ug_selector","changegroup"),n.setAttribute("data-page",t),n.setAttribute("data-group-id",e.dataset.groupId),n.setAttribute("data-groupname",a),n.innerHTML=o,s.appendChild(n);const r=document.getElementById("g_"+t);for(;r.firstChild;)r.firstChild.remove();r.appendChild(s)}static setPermissionCheckboxes(e,t){const a=document.querySelectorAll(`input[type="checkbox"][name^="${e}"]`);for(let e of a){const a=parseInt(e.value,10);e.checked=(t&a)===a}}static updatePermissionValue(e,t){let a=0;const o=document.querySelectorAll(`input[type="checkbox"][name^="${e}"]:checked`);for(let e of o)a|=parseInt(e.value,10);document.forms.namedItem("editform")[t].value=a|("tx_beuser_system_beusertxpermission[check][perms_user]"===e?1:0)}setPermissions(e){let t=e.dataset.page,a=e.dataset.who;new o(this.ajaxUrl).post({page:t,who:a,permissions:e.dataset.permissions,mode:e.dataset.mode,bits:e.dataset.bits}).then(async e=>{const o=await e.resolve();document.getElementById(t+"_"+a).outerHTML=o,s.initialize('[data-bs-toggle="tooltip"]')})}toggleEditLock(e){let t=e.dataset.page;new o(this.ajaxUrl).post({action:"toggle_edit_lock",page:t,editLockState:e.dataset.lockstate}).then(async e=>{document.getElementById("el_"+t).outerHTML=await e.resolve()})}changeOwner(e){let t=e.dataset.page;const a=document.getElementById("o_"+t);new o(this.ajaxUrl).post({action:"change_owner",page:t,ownerUid:e.dataset.owner,newOwnerUid:a.getElementsByTagName("select")[0].value}).then(async e=>{a.outerHTML=await e.resolve()})}showChangeOwnerSelector(e){let t=e.dataset.page;new o(this.ajaxUrl).post({action:"show_change_owner_selector",page:t,ownerUid:e.dataset.owner,username:e.dataset.username}).then(async e=>{document.getElementById("o_"+t).outerHTML=await e.resolve()})}changeGroup(e){let t=e.dataset.page;const a=document.getElementById("g_"+t);new o(this.ajaxUrl).post({action:"change_group",page:t,groupUid:e.dataset.groupId,newGroupUid:a.getElementsByTagName("select")[0].value}).then(async e=>{a.outerHTML=await e.resolve()})}showChangeGroupSelector(e){let t=e.dataset.page;new o(this.ajaxUrl).post({action:"show_change_group_selector",page:t,groupUid:e.dataset.groupId,groupname:e.dataset.groupname}).then(async e=>{document.getElementById("g_"+t).outerHTML=await e.resolve()})}initializeCheckboxGroups(){document.querySelectorAll("[data-checkbox-group]").forEach(e=>{const t=e.dataset.checkboxGroup,a=parseInt(e.value,10);n.setPermissionCheckboxes(t,a)})}initializeEvents(){const e=document.querySelector(this.options.containerSelector),t=document.querySelector(this.options.editControllerSelector);null!==e&&(new a.default("click",(e,t)=>{e.preventDefault(),this.setPermissions(t)}).delegateTo(e,".change-permission"),new a.default("click",(e,t)=>{e.preventDefault(),this.toggleEditLock(t)}).delegateTo(e,".editlock"),new a.default("click",(e,t)=>{e.preventDefault(),this.showChangeOwnerSelector(t)}).delegateTo(e,".changeowner"),new a.default("click",(e,t)=>{e.preventDefault(),this.showChangeGroupSelector(t)}).delegateTo(e,".changegroup"),new a.default("click",(e,t)=>{e.preventDefault(),n.restoreOwner(t)}).delegateTo(e,".restoreowner"),new a.default("click",(e,t)=>{e.preventDefault(),this.changeOwner(t)}).delegateTo(e,".saveowner"),new a.default("click",(e,t)=>{e.preventDefault(),n.restoreGroup(t)}).delegateTo(e,".restoregroup"),new a.default("click",(e,t)=>{e.preventDefault(),this.changeGroup(t)}).delegateTo(e,".savegroup")),null!==t&&new a.default("click",(e,t)=>{const a=t.dataset.checkChangePermissions.split(",").map(e=>e.trim());n.updatePermissionValue.apply(this,a)}).delegateTo(t,"[data-check-change-permissions]")}}return new n}));
\ No newline at end of file
+var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};define(["require","exports","TYPO3/CMS/Core/Event/RegularEvent","TYPO3/CMS/Core/Ajax/AjaxRequest","TYPO3/CMS/Backend/Tooltip"],(function(e,t,a,o,s){"use strict";a=__importDefault(a);class n{constructor(){this.options={containerSelector:"#typo3-permissionList",editControllerSelector:"#PermissionControllerEdit"},this.ajaxUrl=TYPO3.settings.ajaxUrls.user_access_permissions,this.initializeCheckboxGroups(),this.initializeEvents()}static restoreOwner(e){let t=e.dataset.page,a=e.dataset.username,o=a;void 0===a&&(a="[not set]",o=`<span class="not_set">${a}</span>`);let s=document.createElement("span");s.id="o_"+t;let n=document.createElement("button");n.classList.add("ug_selector","changeowner","btn","btn-link"),n.setAttribute("type","button"),n.setAttribute("data-page",t),n.setAttribute("data-owner",e.dataset.owner),n.setAttribute("data-username",a),n.innerHTML=o,s.appendChild(n);const r=document.getElementById("o_"+t);for(;r.firstChild;)r.firstChild.remove();r.appendChild(s)}static restoreGroup(e){let t=e.dataset.page,a=e.dataset.groupname,o=a;void 0===a&&(a="[not set]",o=`<span class="not_set">${a}</span>`);let s=document.createElement("span");s.id="g_"+t;let n=document.createElement("button");n.classList.add("ug_selector","changegroup","btn","btn-link"),n.setAttribute("type","button"),n.setAttribute("data-page",t),n.setAttribute("data-group-id",e.dataset.groupId),n.setAttribute("data-groupname",a),n.innerHTML=o,s.appendChild(n);const r=document.getElementById("g_"+t);for(;r.firstChild;)r.firstChild.remove();r.appendChild(s)}static setPermissionCheckboxes(e,t){const a=document.querySelectorAll(`input[type="checkbox"][name^="${e}"]`);for(let e of a){const a=parseInt(e.value,10);e.checked=(t&a)===a}}static updatePermissionValue(e,t){let a=0;const o=document.querySelectorAll(`input[type="checkbox"][name^="${e}"]:checked`);for(let e of o)a|=parseInt(e.value,10);document.forms.namedItem("editform")[t].value=a|("tx_beuser_system_beusertxpermission[check][perms_user]"===e?1:0)}setPermissions(e){let t=e.dataset.page,a=e.dataset.who;new o(this.ajaxUrl).post({page:t,who:a,permissions:e.dataset.permissions,mode:e.dataset.mode,bits:e.dataset.bits}).then(async e=>{const o=await e.resolve();document.getElementById(t+"_"+a).outerHTML=o,s.initialize('[data-bs-toggle="tooltip"]')})}toggleEditLock(e){let t=e.dataset.page;new o(this.ajaxUrl).post({action:"toggle_edit_lock",page:t,editLockState:e.dataset.lockstate}).then(async e=>{document.getElementById("el_"+t).outerHTML=await e.resolve()})}changeOwner(e){let t=e.dataset.page;const a=document.getElementById("o_"+t);new o(this.ajaxUrl).post({action:"change_owner",page:t,ownerUid:e.dataset.owner,newOwnerUid:a.getElementsByTagName("select")[0].value}).then(async e=>{a.outerHTML=await e.resolve()})}showChangeOwnerSelector(e){let t=e.dataset.page;new o(this.ajaxUrl).post({action:"show_change_owner_selector",page:t,ownerUid:e.dataset.owner,username:e.dataset.username}).then(async e=>{document.getElementById("o_"+t).outerHTML=await e.resolve()})}changeGroup(e){let t=e.dataset.page;const a=document.getElementById("g_"+t);new o(this.ajaxUrl).post({action:"change_group",page:t,groupUid:e.dataset.groupId,newGroupUid:a.getElementsByTagName("select")[0].value}).then(async e=>{a.outerHTML=await e.resolve()})}showChangeGroupSelector(e){let t=e.dataset.page;new o(this.ajaxUrl).post({action:"show_change_group_selector",page:t,groupUid:e.dataset.groupId,groupname:e.dataset.groupname}).then(async e=>{document.getElementById("g_"+t).outerHTML=await e.resolve()})}initializeCheckboxGroups(){document.querySelectorAll("[data-checkbox-group]").forEach(e=>{const t=e.dataset.checkboxGroup,a=parseInt(e.value,10);n.setPermissionCheckboxes(t,a)})}initializeEvents(){const e=document.querySelector(this.options.containerSelector),t=document.querySelector(this.options.editControllerSelector);null!==e&&(new a.default("click",(e,t)=>{e.preventDefault(),this.setPermissions(t)}).delegateTo(e,".change-permission"),new a.default("click",(e,t)=>{e.preventDefault(),this.toggleEditLock(t)}).delegateTo(e,".editlock"),new a.default("click",(e,t)=>{e.preventDefault(),this.showChangeOwnerSelector(t)}).delegateTo(e,".changeowner"),new a.default("click",(e,t)=>{e.preventDefault(),this.showChangeGroupSelector(t)}).delegateTo(e,".changegroup"),new a.default("click",(e,t)=>{e.preventDefault(),n.restoreOwner(t)}).delegateTo(e,".restoreowner"),new a.default("click",(e,t)=>{e.preventDefault(),this.changeOwner(t)}).delegateTo(e,".saveowner"),new a.default("click",(e,t)=>{e.preventDefault(),n.restoreGroup(t)}).delegateTo(e,".restoregroup"),new a.default("click",(e,t)=>{e.preventDefault(),this.changeGroup(t)}).delegateTo(e,".savegroup")),null!==t&&new a.default("click",(e,t)=>{const a=t.dataset.checkChangePermissions.split(",").map(e=>e.trim());n.updatePermissionValue.apply(this,a)}).delegateTo(t,"[data-check-change-permissions]")}}return new n}));
\ No newline at end of file