2017-01-29 5 views
1

С новыми веб-расширениями firefox: есть способ сохранить текущую страницу (или ее часть) как html (или текст) на диск? Если нет, то каковы шансы, такой API будет реализован в будущем?Firefox webextension: Сохранить страницу как html или текст

Я не нашел подходящего API и не ценю никакой помощи.

С уважением

ответ

1

Есть, вероятно, несколько способов сделать это. Ниже вы узнаете, как начать. Это сохраняет веб-страницу на текущей сосредоточенной вкладке в активном окне до пути загрузки по умолчанию браузера. Имя файла имеет значение «samplePage.html» (вы можете изменить это, изменив значение имени файла в параметрах downloads.download(), или вы можете полностью удалить это поле и оставить его по умолчанию).

Вам необходимо будет store icon images в вашем пакете webextension, чтобы пользователь мог нажать. Кроме того, не забудьте перейти на веб-страницу, которую вы хотите сохранить, прежде чем пытаться использовать веб-расширение; webextensions не активны на странице Firefox: отладка.

манифеста:

{ 
    "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 - Это своего рода академическое упражнение. Вы пытались использовать функцию «Сохранить страницу как ...» в контекстном меню, которое появляется из щелчка правой кнопкой мыши на странице? –

+0

Я предполагаю, что «академический» является уничижительным термином в вашем мире. Просто потому, что вы не видите, что использование чего-то не означает, что для этого нет никакой пользы. Во всяком случае, спасибо за оригинальный ответ. – lith