From d8d4c3493020bbf163dc963c94a21dc429604c34 Mon Sep 17 00:00:00 2001 From: Quazgar <quazgar@posteo.de> Date: Tue, 16 Feb 2021 13:19:44 +0000 Subject: [PATCH] FIX: Make edit mode compatible with Safari 11 (on iOS 13). Remove outerHTML assignment which failed there and replace by equivalent innerHTML workflow. --- CHANGELOG.md | 2 ++ src/core/js/webcaosdb.js | 14 ++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 985d1541..dc5d40f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- Fixed edit mode for Safari 11. + ### Security (in case of vulnerabilities) ## [0.3.0] - 2021-02-10 diff --git a/src/core/js/webcaosdb.js b/src/core/js/webcaosdb.js index 55337a36..b7ad95f4 100644 --- a/src/core/js/webcaosdb.js +++ b/src/core/js/webcaosdb.js @@ -1683,11 +1683,17 @@ function getXSLScriptClone(source) { /** * TODO */ -function injectTemplate(orig_xsl, template) { +function injectTemplate(orig_xsl, templateStr) { var xsl = getXSLScriptClone(orig_xsl); - var entry_t = xsl.createElement("xsl:template"); - xsl.firstElementChild.appendChild(entry_t); - entry_t.outerHTML = template; + // var entry_t = xsl.createElement("xsl:template"); + // xsl.firstElementChild.appendChild(entry_t); + // entry_t.outerHTML = template; // Does not work in templates in Safari 11 + // Workaround follows, remove after Safari also has the behaviour of Firefox and current WebKit + var temp = xsl.documentElement.cloneNode(false) + temp.innerHTML = templateStr; + var entry_t = temp.firstChild; + xsl.documentElement.appendChild(entry_t); + // End of workaround return xsl; } -- GitLab