Chrome 확장 Backbone.js 컬렉션을 일반 JavaScript 배열로 변환합니다
-
12-12-2019 - |
문제
내 배경 스크립트에서 :
var collection = Backbone.Collection.extend({});
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
sendResponse(new collection());
}
.
내 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
});
});
.
SendRequest 콜백의 'collection'인수 위의 주석에서 언급 한 바와 같이 백본 .Collection 대신 일반 JS 배열로 밝혀졌습니다.
이것은 Chromium에 의해 취해진 복종 인공물 / 보안 조치입니다.SendRequest를 통해 Backbone.Collection을 통과하는 방법이 있습니까?
해결책
onRequest
문서 논쟁에 대한 인수가 말합니다.sendResponse
는 json-ifiable 객체 여야하므로 콜렉션의 toJSON
메소드가 호출되고 데이터 만 남겨두고 있다고 가정합니다.
대상 스크립트에서 수집 정의가있는 경우 동일한 데이터가있는 새 개체를 인스턴스화 할 수 있습니다.
제휴하지 않습니다 StackOverflow