2012-07-18 12 views
7

Ich arbeite an einer Firefox-Erweiterung und ich muss ein JavaScript in eine Seite aus einem Inhaltsskript einfügen. In meiner Chrome-Erweiterung habe ich Folgendes getan:Wie referenziere ich eine Datei im Datenverzeichnis einer Firefox-Erweiterung?

this.initializeJplayerSupport = function() { 
    var script = document.createElement('script'); 
    script.setAttribute('type', 'application/javascript'); 
    script.setAttribute('src', chrome.extension.getURL('js/custom-jplayer.js')); 
    document.head.appendChild(script); 
} 

Die Datei befindet sich in meinem Datenverzeichnis. Wie kann ich eine js-Datei in einem Firefox-Erweiterungscontent-Skript referenzieren (wo ich chrome.extension.getURL() für Chrome verwendet habe)?

Antwort

10

Wenn Sie in main.js in Ihrem SDK-basierten Add-on sind, die Sie benötigen und verwenden Sie die 'Daten' Helfer vom 'Selbst' Objekt:

var data = require('self').data; 

console.log(data.url('somefile.js')); // prints the resource uri to the file. 

Für weitere Informationen:

https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/self#data

Sobald Sie diese Ressource uri erhalten, können Sie dann zu einem Content-Skript liefern self.postMessage oder self.port.emit mit:

https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts

+0

, die im Haupt Skript richtig und nicht in einem Inhaltsverzeichnis? oder liege ich falsch? – PeeHaa

+0

Das ist im Hauptskript, 'main.js', ja. – canuckistani

+0

"Wie kann ich eine js-Datei in einem Firefox-Plugin verweisen ** inhaltsverzeichnis **". Ist es möglich oder schaue ich es falsch an? – PeeHaa

2

Es sieht so aus, dass ab Firefox 38 cfx durch jpm ersetzt wurde.

Welche warum könnte diese Linie nicht für mich arbeitet:

var data = require('self').data; 

ich einfach hatte es ein wenig neu zu schreiben:

var data = require('sdk/self').data; 
Verwandte Themen