2016-04-07 39 views
0

Bu benim ilk kez bir firefox addon oluşturmayı öğreniyor. Bir pencerede tüm açık sekmeleri saklamak istiyorum ve bunun için sdk/sekmeleri kullanıyorum. Ben sekmeleri = ("sdk/sekmeler") satır gerektiren Var ulaştıklarında bir Referans hatası alıyorumReferenceError, firefox web sekansında sdk/sekmeler kullanılırken

/* 
Given the name of a beast, get the URL to the corresponding image. 
*/ 
debugger; 
var tabs = require("sdk/tabs"); 
function beastNameToURL(beastName) { 
    switch (beastName) { 
    case "Save Session": 
     debugger; 
     for (let tab of tabs) 
      console.log(tab.url); 
     return; 
    case "Load Session": 
    debugger; 
     return chrome.extension.getURL("beasts/snake.jpg"); 
    case "Turtle": 
     return chrome.extension.getURL("beasts/turtle.jpg"); 
    } 
} 

/* 
Listen for clicks in the popup. 

If the click is not on one of the beasts, return early. 

Otherwise, the text content of the node is the name of the beast we want. 

Inject the "beastify.js" content script in the active tab. 

Then get the active tab and send "beastify.js" a message 
containing the URL to the chosen beast's image. 
*/ 
document.addEventListener("click", function(e) { 

    if (!e.target.classList.contains("btn")) { 
    return; 
    } 


    var chosenBeast = e.target.textContent; 
    var chosenBeastURL = beastNameToURL(chosenBeast); 

    chrome.tabs.executeScript(null, { 
    file: "/content_scripts/beastify.js" 
    }); 

    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { 
    chrome.tabs.sendMessage(tabs[0].id, {beastURL: chosenBeastURL}); 
    }); 

}); 

:

İşte benim js dosyasıdır. Error snapshot

Github: https://github.com/sagar-shah/Session-manifest

Tür bana bu hatayı gidermek nasıl bildirin. Bu eklentilerle ilk defa olmak tamamen kayboldum.

Şimdiden teşekkürler.

Güncelleme: Dünya çapında js dosyasında bildirmek için çalıştı. Şimdi sekmeler için tanımlanmamış bir hata alıyorum.

Update2: @matagus tarafından belirtildiği gibi sdk ve webextensions kullanarak geliştirme karıştırıyordum. Webextensions kullanarak geliştirme yapmaya karar verdim. Yeni depoya bağlantı güncellendi.

+0

emin değil ama bu "ana" dir: "manifest.json", "doğru mu? tüm addon'umda 'index.js' –

+0

@FastSnail olarak ayarlandığından emin değilim. Öğreticide ana dosya index.js olarak verilmiş olsa da, benim butonuma tıklandığında, bir popup açmak istiyorum ve herhangi bir js dosyasını buton tıklatarak çalıştırmak istemiyorum. Bu yüzden manifest.json'umu ana dosya olarak ekleyeceğimi düşündüm. – Posiedon

+0

Dün kullandım. Küresel olarak bildirmeye çalışın - https://github.com/Noitidart/jpmOAuth/blob/master/index.js - "jpm run" veya "jpm xpi" yi kullanıyorsunuz? Anlamıyorsun cfx' doğru değil? Cfx’in kullanımdan kaldırıldığı gibi. – Noitidart

cevap

4

Hata, package.json numaralı satırda 6: addon sdk'una, addon'unuzun ana dosyasının manage.json olduğunu söylüyorsunuz. göre [docs] ana değeri olmalıdır:

A string representing the name of a program module that is located in one of the top-level module directories specified by lib. Defaults to "index.js". 

Yani index.js onun değerini değiştirmek gerekir. Bunun yanı sıra

, sana (a'manifest.json' varsa ve jpm aracını kullanarak inşa ettiklerini yoktur) ve'manifest yazmanızı gerektirir yeni WebExtensions Firefox addon built using the addon-sdk arasında bir fark eksik düşünüyorum. Json zaten sahip olduğu gibi.

GÜNCELLEME:

Tekrar: Eğer WebExtensions ve SDK tabanlı addons arasındaki farkı kaçırıyorsun. Artık bir WebExtension yaptınız, ancak SDK'yı kullanmaya çalışıyorsunuz. Bu mümkün değil. Doğrudan sdk'den (var tabs = require("sdk/tabs");) içeri aktarmaya çalışmak yerine chrome.tabs kullanın.

+0

İkisi arasındaki farkı işaretlediğiniz için teşekkürler. Şimdi yeni bir depo oluşturdum ama yine de hata alıyorum. Lütfen yardım et. – Posiedon

+0

Cevabımı güncelledim, lütfen kontrol edin. – matagus