使用新的Firefox Firefox webextensions:有沒有辦法將當前頁面(或其中的一部分)保存爲html(或文本)到磁盤?如果不是,將來如何實施這樣的API將會如何?Firefox webextension:將頁面另存爲html或文本
我沒有找到任何合適的API,並感謝任何幫助。
問候
使用新的Firefox Firefox webextensions:有沒有辦法將當前頁面(或其中的一部分)保存爲html(或文本)到磁盤?如果不是,將來如何實施這樣的API將會如何?Firefox webextension:將頁面另存爲html或文本
我沒有找到任何合適的API,並感謝任何幫助。
問候
可能有幾種方法可以做到這一點。以下將幫助您開始。它將網頁保存在活動窗口中當前關注的選項卡上,並保存到瀏覽器的默認下載路徑中。文件名設置爲'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而不是磁盤。我還沒有探索過這個選擇。
這些網頁可能會有所幫助:
有可能是在給一個webextension這些權限的安全隱患。您必須權衡自己使用模式的風險。
這會保存普通的html到磁盤嗎?有沒有辦法獲得「另存爲完整HTML」或「另存爲文本」行爲?謝謝! – lith
@lith - 這是一種學術活動。您是否嘗試過使用右鍵單擊頁面時彈出的上下文菜單中的「Save Page As ...」功能? –
我猜「學術」是你世界的一個貶義詞。僅僅因爲你看不到某些東西的使用並不意味着它沒有用處。無論如何,謝謝你原來的答案。 – lith