का उपयोग नहीं किया जा सकता है, मैं पहली बार एड-ऑन विकसित कर रहा हूं। यह स्टेटस बार में एक छोटा विजेट डालता है जो अपठित Google रीडर आइटमों की संख्या प्रदर्शित करता है। इसे समायोजित करने के लिए, ऐड-ऑन प्रक्रिया हर बार Google रीडर एपीआई से पूछताछ करती है और विजेट को प्रतिक्रिया देती है। जब मैं cfx test
चलाने मैं इस त्रुटि मिलती है:त्रुटि: पृष्ठ को नष्ट कर दिया गया है और अब
Error: The page has been destroyed and can no longer be used.
मैं विजेट का detach
घटना को पकड़ने और जवाब में ताज़ा टाइमर को रोकने के लिए सुनिश्चित किया है, लेकिन मैं अभी भी त्रुटि दिखाई दे रही। मैं क्या गलत कर रहा हूं? यहाँ प्रासंगिक कोड है:
// main.js - Main entry point
const tabs = require('tabs');
const widgets = require('widget');
const data = require('self').data;
const timers = require("timers");
const Request = require("request").Request;
function refreshUnreadCount() {
// Put in Google Reader API request
Request({
url: "https://www.google.com/reader/api/0/unread-count?output=json",
onComplete: function(response) {
// Ignore response if we encountered a 404 (e.g. user isn't logged in)
// or a different HTTP error.
// TODO: Can I make this work when third-party cookies are disabled?
if (response.status == 200) {
monitorWidget.postMessage(response.json);
} else {
monitorWidget.postMessage(null);
}
}
}).get();
}
var monitorWidget = widgets.Widget({
// Mandatory widget ID string
id: "greader-monitor",
// A required string description of the widget used for
// accessibility, title bars, and error reporting.
label: "GReader Monitor",
contentURL: data.url("widget.html"),
contentScriptFile: [data.url("jquery-1.7.2.min.js"), data.url("widget.js")],
onClick: function() {
// Open Google Reader when the widget is clicked.
tabs.open("https://www.google.com/reader/view/");
},
onAttach: function(worker) {
// If the widget's inner width changes, reflect that in the GUI
worker.port.on("widthReported", function(newWidth) {
worker.width = newWidth;
});
var refreshTimer = timers.setInterval(refreshUnreadCount, 60000);
// If the monitor widget is destroyed, make sure the timer gets cancelled.
worker.on("detach", function() {
timers.clearInterval(refreshTimer);
});
refreshUnreadCount();
}
});
// widget.js - Status bar widget script
// Every so often, we'll receive the updated item feed. It's our job
// to parse it.
self.on("message", function(json) {
if (json == null) {
$("span#counter").attr("class", "");
$("span#counter").text("N/A");
} else {
var newTotal = 0;
for (var item in json.unreadcounts) {
newTotal += json.unreadcounts[item].count;
}
// Since the cumulative reading list count is a separate part of the
// unread count info, we have to divide the total by 2.
newTotal /= 2;
$("span#counter").text(newTotal);
// Update style
if (newTotal > 0)
$("span#counter").attr("class", "newitems");
else
$("span#counter").attr("class", "");
}
// Reports the current width of the widget
self.port.emit("widthReported", $("div#widget").width());
});
संपादित: मैं this GitHub repository को अपनी संपूर्णता में परियोजना अपलोड कर दिया है।
यह त्रुटि आपके postMessage लिए आता है। क्या आपने 'monitorWidget.port.emit (" widthReported ", response.json) के साथ प्रयास किया है;'? –
@ चार्ल्स: मैं आपकी टिप्पणी के कारण इस मुद्दे को ठीक करने में सक्षम था। क्या आप इसे एक उत्तर के रूप में पोस्ट कर सकते हैं ताकि आप बक्षीस के लिए योग्य हो? – Pieter
हां मैं इसे अभी करता हूं लेकिन मैं अधिक स्पष्टीकरण नहीं दे सकता:/ –