diff options
| author | mrmr1993 | 2017-10-02 15:36:17 +0100 | 
|---|---|---|
| committer | mrmr1993 | 2017-10-02 15:36:17 +0100 | 
| commit | 0d2a44fb47d7a6599093c6b4de6bcd54da9b7cb8 (patch) | |
| tree | 7f8a88c4f1b287aa037e1b2f07bc9d59848eca65 | |
| parent | 10bcb92735f820779950557c5d59d35f769a10fc (diff) | |
| download | vimium-0d2a44fb47d7a6599093c6b4de6bcd54da9b7cb8.tar.bz2 | |
FF: Lazy load the Vomnibar for XML documents
Injecting HTML into XML documents on Firefox breaks the rendering
(collapsing it into plain text). By not loading it until explicitly
requested, we can avoid this breakage (at least, until a user triggers
some of our UI manually).
| -rw-r--r-- | content_scripts/vimium_frontend.coffee | 11 | ||||
| -rw-r--r-- | content_scripts/vomnibar.coffee | 8 | 
2 files changed, 12 insertions, 7 deletions
| diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 02bdfa2c..4f2e805d 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -160,9 +160,14 @@ installModes = ->  initializeOnEnabledStateKnown = (isEnabledForUrl) ->    installModes() unless normalMode    if isEnabledForUrl -    # We only initialize (and activate) the Vomnibar in the top frame.  Also, we do not initialize the -    # Vomnibar until we know that Vimium is enabled.  Thereafter, there's no more initialization to do. -    DomUtils.documentComplete Vomnibar.init.bind Vomnibar if DomUtils.isTopFrame() +    unless Utils.isFirefox() and document.documentElement.namespaceURI != "http://www.w3.org/1999/xhtml" +      # We only initialize (and activate) the Vomnibar in the top frame.  Also, we do not initialize the +      # Vomnibar until we know that Vimium is enabled.  Thereafter, there's no more initialization to do. +      # +      # NOTE(mrmr1993): In XML documents on Firefox, injecting HTML into the DOM breaks the rendering, so we +      # lazy load the Vomnibar. This comes with the expected issues, but is better than breaking all XML +      # documents. +      DomUtils.documentComplete Vomnibar.init.bind Vomnibar if DomUtils.isTopFrame()      initializeOnEnabledStateKnown = ->  # diff --git a/content_scripts/vomnibar.coffee b/content_scripts/vomnibar.coffee index 04499523..14d72e87 100644 --- a/content_scripts/vomnibar.coffee +++ b/content_scripts/vomnibar.coffee @@ -53,10 +53,10 @@ Vomnibar =    #   selectFirst - Optional, boolean. Whether to select the first entry.    #   newTab      - Optional, boolean. Whether to open the result in a new tab.    open: (sourceFrameId, options) -> -    if @vomnibarUI? -      # The Vomnibar cannot coexist with the help dialog (it causes focus issues). -      HelpDialog.abort() -      @vomnibarUI.activate extend options, { name: "activate", sourceFrameId, focus: true } +    @init() +    # The Vomnibar cannot coexist with the help dialog (it causes focus issues). +    HelpDialog.abort() +    @vomnibarUI.activate extend options, { name: "activate", sourceFrameId, focus: true }  root = exports ? window  root.Vomnibar = Vomnibar | 
