Pregunta

En mi guión de fondo:

var collection = Backbone.Collection.extend({});

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
  sendResponse(new collection());
}

En el javascript de mi 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
  }); 
}); 

Como se menciona en el comentario anterior, el argumento 'colección' en la devolución de llamada sendRequest resulta ser una matriz JS normal, en lugar de Backbone.Collection.

¿Es esto un artefacto de desinfección/medida de seguridad tomada por Chrome?¿Hay alguna forma de pasar Backbone.Collection mediante sendRequest?

¿Fue útil?

Solución

Desde el onRequest documentación dice que el argumento para sendResponse debería ser un objeto JSON, así que supongo que el objeto de la Colección toJSON Se llama al método, dejándolo solo con los datos.

Si tiene la definición de Colección en el script de destino, puede crear una instancia de un nuevo objeto con los mismos datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top