मैं एक विस्तार विकसित करने के लिए नए फ़ायरफ़ॉक्स एडॉन्स एसडीके का उपयोग कर रहा हूं। मेरे पास एक पैनल संलग्न है, जिसमें एक पैनल संलग्न है। पैनल को प्राथमिकताओं को नियंत्रित करने के लिए उपयोग किया जाता है, इसलिए मुझे पैनल की सामग्री स्क्रिप्ट से सरल-संग्रहण एपीआई तक पहुंचने की आवश्यकता है। मुझे पता है कि आप सीधे एपीआई तक नहीं पहुंच सकते हैं, इसलिए मैंने संदेश पास करने का प्रयास किया है। यहाँ मैं क्या मिल गया है:फ़ायरफ़ॉक्स एडॉन्स एसडीके - सामग्री स्क्रिप्ट से सरल संग्रहण तक कैसे पहुंचे?
exports.main = function() {
var panel = require('panel');
var ss = require('simple-storage');
var prefPanel = panel.Panel({
contentURL: self.data.url('prefPanel.html'),
contentScriptFile: self.data.url('prefPanel.js'),
contentScriptWhen: 'ready',
onMessage: function(message) {
switch(message.method) {
case 'setValue':
ss.storage[message.key] = message.value;
}
},
});
prefPanel.postMessage(ss.storage);
require('widget').Widget({
id: 'ml-pref-button',
content: 'ML',
width: 30,
panel: prefPanel,
})
}
और prefPanel.js में मुझे मिल गया है:
Error: An exception occurred.
Traceback (most recent call last):
File "resource://jid0-wdemwzahwzh3bsw0kkxlcjg9e7k-at-jetpack-api-utils-lib/content/worker.js", line 405, in postMessage
throw new Error(ERR_DESTROYED);
Error: The page has been destroyed and can no longer be used.
मुझे लगता है कि लगता है:
self.on('message', function(storage) {
storage.setValue = function(key, value) {
this[key] = value;
self.postMessage({
method: 'setValue',
'key': key,
'value': value,
});
}
// Do some stuff, using storage object
});
समस्या है, मैं इस त्रुटि मिलती है ऐसा इसलिए है क्योंकि prefPanel DOM और सामग्री स्क्रिप्ट अभी तक लोड नहीं हुई हैं। क्या पैनल दिखाए जाने पर हर बार डीओएम और सामग्री स्क्रिप्ट पुनः लोड हो जाती हैं, या वे हमेशा पृष्ठभूमि में चल रहे हैं?