From b1f6da21a882f84965de73eea175475f5d8f7b37 Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Sat, 28 Oct 2017 16:42:51 +0100 Subject: FF: Show backup download link in the options page Firefox doesn't seem to respect the |download| attribute for links, and it garbage collects our blob URL when we navigate away from the options page (to the object URL). We work around this by simply showing the download link in Firefox. Disappointingly, the user needs to right-click the link and choose to download from the context menu. Behaviour in Chrome is unchanged, except that the download link is now visible. --- pages/options.coffee | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'pages/options.coffee') diff --git a/pages/options.coffee b/pages/options.coffee index 0038c3f9..416b3ea7 100644 --- a/pages/options.coffee +++ b/pages/options.coffee @@ -333,15 +333,14 @@ DomUtils?.documentReady -> backup = {} for option in Option.all backup[option.field] = option.readValueFromElement() - blob = new Blob [ JSON.stringify backup ] - url = window.URL.createObjectURL blob - a = document.createElement "a" - document.body.appendChild a - a.style = "display: none" + # Create the blob in the background page so it isn't garbage collected when the page closes in FF. + bgWin = chrome.extension.getBackgroundPage() + blob = new bgWin.Blob [ JSON.stringify backup ] + url = bgWin.URL.createObjectURL blob + a = $ "backupLink" a.href = url - a.download = "vimium-options-#{new Date().toISOString().split("T")[0]}.json" - a.click() - document.body.removeChild a + a.style.display = "" + a.click() unless Utils.isFirefox() $("chooseFile").addEventListener "change", (event) -> document.activeElement?.blur() -- cgit v1.2.3