2017-01-29 3 views
1

Mit dem neuen Firefox Webextensions: Gibt es eine Möglichkeit, die aktuelle Seite (oder einen Teil davon) als HTML (oder Text) auf der Festplatte zu speichern? Wenn nicht, wie stehen die Chancen, dass eine solche API in Zukunft implementiert wird?Firefox Webextension: Seite als HTML oder Text speichern

Ich habe keine passende API gefunden und schätze jede Hilfe.

Grüße

Antwort

1

Es gibt wahrscheinlich mehrere Möglichkeiten, dies zu tun. Das Folgende wird Sie beginnen. Es speichert die Webseite in der aktuell ausgewählten Registerkarte im aktiven Fenster im Standard-Download-Pfad des Browsers. Der Dateiname wird auf 'samplePage.html' gesetzt (Sie können dies ändern, indem Sie den Wert des Dateinamens in den downloads.download() - Optionen ändern, oder Sie können das Feld vollständig entfernen und es der Standardbenennung überlassen).

Sie müssen store icon images in Ihrem Webextension-Paket für den Benutzer klicken können. Achten Sie außerdem darauf, zu einer Webseite zu navigieren, die Sie speichern möchten, bevor Sie versuchen, die Webextension zu verwenden. Webextensions sind auf der Seite Firefox über: Debugging nicht aktiv.

manifestieren:

{ 
    "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"] 
    }  
} 

Hintergrund Skript:

/* 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); 
}); 

Ein alternativer Ansatz könnte die Webseite local storage anstatt auf die Festplatte zu versuchen, zu retten. Ich habe diese Option nicht untersucht.

Diese Seiten können hilfreich sein:

downloads.download()

browserAction.onClicked

Es Sicherheitsrisiken sein kann, eine WebExtension diese Berechtigungen zu geben. Sie müssen die Risiken für Ihr eigenes Nutzungsmuster abwägen.

+0

Wird dies das einfache HTML auf Festplatte speichern? Gibt es eine Möglichkeit, das Verhalten "Als HTML speichern" oder "Als Text speichern" zu erhalten? Vielen Dank! – lith

+0

@lith - Dies ist eine Art akademische Übung. Haben Sie versucht, die Funktion "Seite speichern unter ..." aus dem Kontextmenü zu verwenden, das bei einem Rechtsklick auf die Seite erscheint? –

+0

Ich denke, "akademisch" ist ein abwertender Ausdruck in Ihrer Welt. Nur weil du den Gebrauch von etwas nicht sehen kannst, bedeutet es nicht, dass es keinen Nutzen dafür gibt. Wie auch immer, danke für deine ursprüngliche Antwort. – lith

Verwandte Themen