From d7893a0b52541b2ec988dda1c7196a7645425586 Mon Sep 17 00:00:00 2001
From: Gnome Ann <>
Date: Thu, 30 Sep 2021 19:00:15 -0400
Subject: [PATCH] Check for WebKit after connecting to the server
For some reason the original way only works in Safari after pressing the
refresh button. It did not work if you typed the URL into the address
bar in Safari without refreshing afterwards.
---
static/application.js | 61 ++++++++++++++++++++++---------------------
templates/index.html | 2 +-
2 files changed, 32 insertions(+), 31 deletions(-)
diff --git a/static/application.js b/static/application.js
index e6c05c08..04cf862e 100644
--- a/static/application.js
+++ b/static/application.js
@@ -79,7 +79,7 @@ var sman_allow_delete = false;
var sman_allow_rename = false;
// This is true iff [we're in macOS and the browser is Safari] or [we're in iOS]
-var using_webkit_patch = false;
+var using_webkit_patch = null;
// Key states
var shift_down = false;
@@ -1105,35 +1105,6 @@ $(document).ready(function(){
seqselmenu = $("#seqselmenu");
seqselcontents = $("#seqselcontents");
- // A simple feature detection test to determine whether the user interface
- // is using WebKit (Safari browser's rendering engine) because WebKit
- // requires special treatment to work correctly with the KoboldAI editor
- using_webkit_patch = (function() {
- try {
- var active_element = document.activeElement;
- var c = document.createElement("chunk");
- var t = document.createTextNode("KoboldAI");
- c.appendChild(t);
- game_text[0].appendChild(c);
- var r = rangy.createRange();
- r.setStart(t, 6);
- r.collapse(true);
- var s = rangy.getSelection();
- s.removeAllRanges();
- s.addRange(r);
- game_text.blur();
- game_text.focus();
- var offset = rangy.getSelection().focusOffset;
- c.removeChild(t);
- game_text[0].removeChild(c);
- document.activeElement.blur();
- active_element.focus();
- return offset !== 6;
- } catch (e) {
- return false;
- }
- })();
-
// Connect to SocketIO server
socket = io.connect(window.document.origin);
@@ -1158,6 +1129,36 @@ $(document).ready(function(){
game_text.attr('contenteditable', allowedit);
}
});
+ // A simple feature detection test to determine whether the user interface
+ // is using WebKit (Safari browser's rendering engine) because WebKit
+ // requires special treatment to work correctly with the KoboldAI editor
+ if(using_webkit_patch === null) {
+ using_webkit_patch = (function() {
+ try {
+ var active_element = document.activeElement;
+ var c = document.createElement("chunk");
+ var t = document.createTextNode("KoboldAI");
+ c.appendChild(t);
+ game_text[0].appendChild(c);
+ var r = rangy.createRange();
+ r.setStart(t, 6);
+ r.collapse(true);
+ var s = rangy.getSelection();
+ s.removeAllRanges();
+ s.addRange(r);
+ game_text.blur();
+ game_text.focus();
+ var offset = rangy.getSelection().focusOffset;
+ c.removeChild(t);
+ game_text[0].removeChild(c);
+ document.activeElement.blur();
+ active_element.focus();
+ return offset !== 6;
+ } catch (e) {
+ return false;
+ }
+ })();
+ }
} else if(msg.cmd == "updatescreen") {
var _gamestarted = gamestarted;
gamestarted = msg.gamestarted;
diff --git a/templates/index.html b/templates/index.html
index 3a078f88..55978aec 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -6,7 +6,7 @@
-
+