From 065b57d30d56c5375b2ac0c06b04bd8bac0a3cf6 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Mon, 5 Feb 2018 10:27:01 +0000 Subject: Create flash frame Shadow DOM element on demand. It looks like we'll be initialising the Vomnibar on demand (see #2939, merged). In this case, we should also initialise the flash frame on demand. This means that *none* of Vimium's UI elements are now created until they are needed. --- content_scripts/vimium_frontend.coffee | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) (limited to 'content_scripts/vimium_frontend.coffee') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 11310dcf..26aa3492 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -237,25 +237,29 @@ setScrollPosition = ({ scrollX, scrollY }) -> Marks.setPreviousPosition() window.scrollTo scrollX, scrollY -flashFrame = -> -DomUtils.documentReady -> - # Create a shadow DOM wrapping the frame so the page's styles don't interfere with ours. - highlightedFrameElement = DomUtils.createElement "div" - # PhantomJS doesn't support createShadowRoot, so guard against its non-existance. - _shadowDOM = highlightedFrameElement.createShadowRoot?() ? highlightedFrameElement +flashFrame = do -> + highlightedFrameElement = null + + -> + highlightedFrameElement ?= do -> + # Create a shadow DOM wrapping the frame so the page's styles don't interfere with ours. + highlightedFrameElement = DomUtils.createElement "div" + # PhantomJS doesn't support createShadowRoot, so guard against its non-existance. + _shadowDOM = highlightedFrameElement.createShadowRoot?() ? highlightedFrameElement + + # Inject stylesheet. + _styleSheet = DomUtils.createElement "style" + _styleSheet.innerHTML = "@import url(\"#{chrome.runtime.getURL("content_scripts/vimium.css")}\");" + _shadowDOM.appendChild _styleSheet - # Inject stylesheet. - _styleSheet = DomUtils.createElement "style" - _styleSheet.innerHTML = "@import url(\"#{chrome.runtime.getURL("content_scripts/vimium.css")}\");" - _shadowDOM.appendChild _styleSheet + _frameEl = DomUtils.createElement "div" + _frameEl.className = "vimiumReset vimiumHighlightedFrame" + _shadowDOM.appendChild _frameEl - _frameEl = DomUtils.createElement "div" - _frameEl.className = "vimiumReset vimiumHighlightedFrame" - _shadowDOM.appendChild _frameEl + highlightedFrameElement - flashFrame = -> document.documentElement.appendChild highlightedFrameElement - setTimeout (-> highlightedFrameElement.remove()), 200 + Utils.setTimeout 200, -> highlightedFrameElement.remove() # # Called from the backend in order to change frame focus. -- cgit v1.2.3