aboutsummaryrefslogtreecommitdiffstats
path: root/content_scripts/vimium_frontend.coffee
diff options
context:
space:
mode:
authormrmr19932015-04-24 13:53:54 +0100
committermrmr19932015-04-24 14:39:46 +0100
commit6446cf04c7b44c3d419dc450a73b60bcaf5cdf02 (patch)
treea12709fe681514d543177f4a365baabb7cea95aa /content_scripts/vimium_frontend.coffee
parent16df2200b491e2463b784b4979ba5e9528604b64 (diff)
downloadvimium-6446cf04c7b44c3d419dc450a73b60bcaf5cdf02.tar.bz2
Always initialise event listeners early
The event listeners were registered late, potentially allowing the page to get priority over us for key events, etc., when: * the original URL was disabled by an exclusion rule * the URL was changed - without a page load (by history.pushState or modifying location.hash), and - the new URL isn't (completely) disabled by any exclusion rules. This forces the event listeners to be registered even when the current URL is disabled, to avoid this problem.
Diffstat (limited to 'content_scripts/vimium_frontend.coffee')
-rw-r--r--content_scripts/vimium_frontend.coffee7
1 files changed, 3 insertions, 4 deletions
diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee
index 862118bc..cc97b515 100644
--- a/content_scripts/vimium_frontend.coffee
+++ b/content_scripts/vimium_frontend.coffee
@@ -200,7 +200,7 @@ installListener = (element, event, callback) ->
# Run this as early as possible, so the page can't register any event handlers before us.
#
installedListeners = false
-window.initializeWhenEnabled = ->
+window.initializeWithState = ->
unless installedListeners
# Key event handlers fire on window before they do on document. Prefer window for key events so the page
# can't set handlers to grab the keys before us.
@@ -555,9 +555,8 @@ checkIfEnabledForUrl = ->
updateEnabledForUrlState = (response) ->
{isEnabledForUrl, passKeys} = response
- if isEnabledForUrl
- initializeWhenEnabled()
- else if HUD.isReady()
+ initializeWithState()
+ if HUD.isReady() and not isEnabledForUrl
# Quickly hide any HUD we might already be showing, e.g. if we entered insert mode on page load.
HUD.hide()
handlerStack.bubbleEvent "registerStateChange",