2017-01-29 28 views
1

使用新的Firefox Firefox webextensions:有沒有辦法將當前頁面(或其中的一部分)保存爲html(或文本)到磁盤?如果不是,將來如何實施這樣的API將會如何?Firefox webextension:將頁面另存爲html或文本

我沒有找到任何合適的API,並感謝任何幫助。

問候

回答

1

可能有幾種方法可以做到這一點。以下將幫助您開始。它將網頁保存在活動窗口中當前關注的選項卡上,並保存到瀏覽器的默認下載路徑中。文件名設置爲'samplePage.html'(您可以通過修改downloads.download()選項中的文件名值來更改該文件名,或者可以完全刪除該字段並將其保留爲默認命名)。

您需要在您的webextension軟件包中使用store icon images以供用戶點擊。另外,在嘗試使用webextension之前,請務必導航到您要保存的網頁; Firefox關於:調試頁面的webextensions不活動。

清單:

{ 
    "name": "SavePage", 
    "version": "1.0", 
    "description": "Clicking browser icon saves page html", 
    "manifest_version": 2, 

    "icons": { 
    "48": "icons/clickme-48.png" 
    }, 

    "permissions": [ 
    "tabs", 
    "activeTab", 
    "downloads" 
    ], 

    "browser_action": { 
    "default_icon": "icons/clickme-32.png" 
    }, 

    "background": { 
    "scripts": ["background.js"] 
    }  
} 

背景腳本:

/* BACKGROUND SCRIPT 

Clicking on browser toolbar button saves the webpage in the 
current tab to the browser's default downloads path with a 
filename of "samplePage.html". The "tabs" and "downloads" 
permissions are required. 

*/ 


browser.browserAction.onClicked.addListener((tab) => { 
    var currentUrl = tab.url; 

    function onStartedDownload(id) { 
    console.log(`Started to download: ${id}`); 
    } 

    function onFailed(error) { 
    console.log(`Something stinks: ${error}`); 
    } 

    var startDownload = browser.downloads.download({ 
    url : currentUrl, 
    filename: 'samplePage.html' 
    }); 

    startDownload.then(onStartedDownload, onFailed); 
}); 

另一種方法可能是嘗試將網頁保存到local storage而不是磁盤。我還沒有探索過這個選擇。

這些網頁可能會有所幫助:

downloads.download()

browserAction.onClicked

有可能是在給一個webextension這些權限的安全隱患。您必須權衡自己使用模式的風險。

+0

這會保存普通的html到磁盤嗎?有沒有辦法獲得「另存爲完整HTML」或「另存爲文本」行爲?謝謝! – lith

+0

@lith - 這是一種學術活動。您是否嘗試過使用右鍵單擊頁面時彈出的上下文菜單中的「Save Page As ...」功能? –

+0

我猜「學術」是你世界的一個貶義詞。僅僅因爲你看不到某些東西的使用並不意味着它沒有用處。無論如何,謝謝你原來的答案。 – lith

相關問題