From 3fdfc7436d6e48625d1c1f856658a9afe6fc2a85 Mon Sep 17 00:00:00 2001 From: ccd0 Date: Tue, 12 Jan 2016 01:31:59 -0800 Subject: [PATCH] GM_getValue may not have been updated when storage event is handled. --- src/General/$.coffee | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/General/$.coffee b/src/General/$.coffee index a23ea0652..57b6a03d4 100644 --- a/src/General/$.coffee +++ b/src/General/$.coffee @@ -522,23 +522,24 @@ else if GM_deleteValue? or $.hasStorage $.oldValue[key] = $.getValue key do -> - onChange = (key) -> + onChange = ({key, newValue}) -> return unless cb = $.syncing[key] - newValue = $.getValue key - return if newValue is $.oldValue[key] if newValue? + return if newValue is $.oldValue[key] $.oldValue[key] = newValue cb JSON.parse(newValue), key[g.NAMESPACE.length..] else + return unless $.oldValue[key]? delete $.oldValue[key] cb undefined, key[g.NAMESPACE.length..] - $.on window, 'storage', ({key}) -> onChange key + $.on window, 'storage', onChange $.forceSync = (key) -> # Storage events don't work across origins # e.g. http://boards.4chan.org and https://boards.4chan.org # so force a check for changes to avoid lost data. - onChange g.NAMESPACE + key + key = g.NAMESPACE + key + onChange {key, newValue: $.getValue key} else $.sync = -> $.forceSync = ->