diff --git a/src/Uno.UI/ts/WindowManager.ts b/src/Uno.UI/ts/WindowManager.ts index 262af9b7f6e8be080ee38b8efdb7e95d7e404bc0..6f73947e066e347b7a36a528dc91f37eb5bbb008 100644 --- a/src/Uno.UI/ts/WindowManager.ts +++ b/src/Uno.UI/ts/WindowManager.ts @@ -127,7 +127,7 @@ namespace Uno.UI { private containerElement: HTMLDivElement; private rootElement: HTMLElement; - private cursorStyleElement: HTMLElement; + private cursorStyleRule: CSSStyleRule; private allActiveElementsById: { [id: string]: HTMLElement | SVGElement } = {}; private uiElementRegistrations: { @@ -1731,22 +1731,16 @@ namespace Uno.UI { if (unoBody) { - //always cleanup - if (this.cursorStyleElement != undefined) { - this.cursorStyleElement.remove(); - this.cursorStyleElement = undefined - } - - //only add custom overriding style if not auto - if (cssCursor != "auto") { + if (this.cursorStyleRule === undefined) { + const styleSheet = document.styleSheets[document.styleSheets.length - 1]; - // this part is only to override default css: .uno-buttonbase {cursor: pointer;} + const ruleId = styleSheet.insertRule(".uno-buttonbase { }", styleSheet.cssRules.length); - this.cursorStyleElement = document.createElement("style"); - this.cursorStyleElement.innerHTML = ".uno-buttonbase { cursor: " + cssCursor + "; }"; - document.body.appendChild(this.cursorStyleElement); + this.cursorStyleRule = styleSheet.cssRules[ruleId]; } + this.cursorStyleRule.style.cursor = cssCursor !== "auto" ? cssCursor : null; + unoBody.style.cursor = cssCursor; } return "ok";