2016-07-15 9 views
0

Ich arbeite an einem Addon, das eine neue Registerkarte öffnet auf einen Klick auf eine Schaltfläche mit einem speziellen HTML. Im Moment befindet sich die HTML-Datei auf einem dedizierten Webspace, aber gibt es eine Workaround dafür, das heißt, kann ich die HTML-Datei in die Datenstruktur des Addons selbst einfügen und von dort darauf zugreifen? Das Problem ist, dass ich die URL der aktiven Site übergebe, wenn die Schaltfläche durch Verketten auf die URL geklickt wird und ich AngularJS in diesem HTML verwende, was ein Problem zu sein scheint.Zugriff auf eine HTML-Datei in Firefox Addon

Mein Code:

index.js:

var { ActionButton } = require("sdk/ui/button/action"); 
var tabs = require("sdk/tabs"); 
var data = require("sdk/self").data; 

var button = ActionButton({ 
    id: "my-button", 
    label: "Start LLIBrowser", 
    icon: { 
    "16": "./img/logo-16.png" 
    }, 
    onClick: showPlugIn 
}); 

function showPlugIn(state){ 
    let currUrl = tabs.activeTab.url; 
    //var file = "file:///home/janine/OneDrive/Uni/OvGU/4. Semester/SoftwareProjekt/LLIBrowserGalleryAndInfo/data/overlay.html"; just for testing 
    var file = "http://www-e.uni-magdeburg.de/jpolster/LLIBrowser/overlay.html"; 
    var completePath = file.concat("?url=").concat(currUrl); 

    tabs.open(completePath) 
} 

irgendwelche Ideen?

Prost!

Antwort

2

In der Theorie sehe ich keine Probleme. Legen Sie Ihre HTML-Datei in Ihrem Datenordner, und es den Zugriff durch:

var file = data.url("overlay.html"); 

Edit: M.Onyshchuk ist richtig zu sagen, dass dies löst eine

Die Adresse ist nicht gültig

Fehler. Ich habe nicht an das ":" gedacht. Um dies zu beheben, entfernen Sie einfach die Protokollinformationen von der URL.

currUrl = currUrl.replace(/^https?\:\/\//i, ""); 

noch AngularJS in Ihrem Add-on zu verwenden, wäre der einfachste Weg, um einfach mit Ihrem Add-on die aktuelle Version zu versenden. Laden Sie die neueste Version herunter, legen Sie sie in Ihren Datenordner und greifen Sie einfach in Ihrer HTML-Datei darauf zu, wie Sie es normalerweise tun würden.

Während mir AngularJS nicht bekannt ist, kann ich mir keinen Grund vorstellen, warum das nicht funktionieren sollte.

Viel Glück mit Ihrem Projekt!

Sintho

1

Es genügt nicht, die Datei Laden zu ändern URI:

var file = data.url("overlay.html"); 

Sie werden in diesem Fall sehen Fehler als

Die Adresse ist nicht gültig

Aber Sie können Ihren Code ändern und aktuelle Registerkarte URL nicht als qu senden ery Teil der URI, sondern als Teil Fragment:

let currUrl = tabs.activeTab.url; 
    currUrl = currUrl.replace(":", "%"); 
    var file = data.url("overlay.html"); 
    var completePath = file.concat("#").concat(currUrl); 

Leider encodeURIComponent funktioniert nicht:

let currUrl = encodeURIComponent(tabs.activeTab.url); // The address isn't valid 

Sie Fragment URI (nach #) analysieren müssen in overlay.html

Verwandte Themen