diff --git a/html/statbrowser.html b/html/statbrowser.html
index e9ca303a88d..9573bd6686f 100644
--- a/html/statbrowser.html
+++ b/html/statbrowser.html
@@ -310,6 +310,15 @@ var under_menu = document.querySelector('#under_menu');
var statcontentdiv = document.querySelector('#statcontent');
var storedimages = [];
+// Any BYOND commands that could result in the client's focus changing go through this
+// to ensure that when we relinquish our focus, we don't do it after the result of
+// a command has already taken focus for itself.
+function send_byond_focus_command(url) {
+ setTimeout(function() {
+ window.location.href = url;
+ }, 0);
+}
+
function createStatusTab(name) {
if (name.indexOf(".") != -1)
name = name.split(".")[0];
@@ -1018,6 +1027,12 @@ function draw_spells(cat) {
document.getElementById("statcontent").appendChild(table);
}
+function make_verb_onclick(command) {
+ return function() {
+ send_byond_focus_command("byond://winset?command=" + command);
+ };
+}
+
function draw_verbs(cat){
statcontentdiv[textContentKey] = "";
var table = document.createElement("div");
@@ -1039,7 +1054,8 @@ function draw_verbs(cat){
}
var a = document.createElement("a");
- a.href = "byond://winset?command=" + command.replace(/\s/g, "-");
+ a.href = "#"
+ a.onclick = make_verb_onclick(command.replace(/\s/g, "-"));
a.className = "grid-item";
var t = document.createElement("span");
t[textContentKey] = command;
@@ -1091,9 +1107,7 @@ function set_style_sheet(sheet) {
}
function restoreFocus() {
- setTimeout(function() {
- window.location.href = "byond://winset?map.focus=true";
- }, 0);
+ send_byond_focus_command("byond://winset?map.focus=true")
}
document[addEventListenerKey]("mouseup", restoreFocus);