Chrome-Erweiterung, die Backbone konvertiert.js-Sammlungen zu regulärem JavaScript-Array
-
12-12-2019 - |
Frage
In meinem Hintergrundskript:
var collection = Backbone.Collection.extend({});
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
sendResponse(new collection());
}
Im Javascript meiner browser_action:
chrome.tabs.getSelected(null, function(tab) {
chrome.extension.sendRequest({
action: "someAction",
tab: tab
},
function(collection) {
// collection is now a JS array, rather than Backbone.Collection
});
});
Wie im obigen Kommentar erwähnt, entpuppt sich das Argument 'collection' im sendRequest-Callback als reguläres JS-Array und nicht als Backbone.Sammlung.
Ist dies ein Desinfektionsartefakt / eine Sicherheitsmaßnahme von Chromium?Gibt es eine Möglichkeit, ein Rückgrat zu passieren.Abholung per Sendeanfrage?
Lösung
Von der onRequest
Dokumentation es sagt, dass das Argument zu sendResponse
sollte ein JSON-ifiable Objekt sein, also gehe ich davon aus, dass die Sammlung toJSON
die Methode wird aufgerufen, sodass Sie nur die Daten haben.
Wenn Sie die Sammlungsdefinition im Zielskript haben, können Sie ein neues Objekt mit denselben Daten instanziieren.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow