Так что я пытаюсь захватить веб-аудио с вкладки и передать ее в другой скрипт, который работает с элементами DOM на странице.webkitMediaStream Тип объекта потерян при использовании sendMessage в Chrome Extension
РАСШИРЕНИЕ SCRIPT
В background.js
, я использую следующий сценарий:
chrome.tabCapture.capture(constraints, function(stream) {
console.log("\ngot stream");
console.log(stream);
chrome.tabs.sendMessage(tabID, {
"message": "stream",
"stream": stream
});
});
Разработчик Инструментарий показывает мне, что созданный объект действительно является объектом MediaStream. (Что я хочу и, кажется, работает нормально).
РАСШИРЕНИЯ CONSOLE:
MediaStream {onremovetrack: null, onaddtrack: null, onended: null, ended: false, id: "c0jm4lYJus3XCwQgesUGT9lpyPQiWlGKHb7q"…}
СОДЕРЖАНИЕ SCRIPT
Я использую скрипт контента (впрыскивается), на самой странице в том тянуть сериализированный объект JSON обратно:
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if (request.message === "stream") {
var thisStream = request.stream;
console.log(thisStream);
if (!thisStream) {
console.log("stream is null");
return;
}
loadStream(thisStream);
}
else if (request.message === "statusChanged") {
console.log("statusChanged");
}
});
PAGE CONSOLE
К сожалению, из-за JSON сериализации, тип объекта теряется:
Object {onremovetrack: null, onaddtrack: null, onended: null, ended: false, id: "c0jm4lYJus3XCwQgesUGT9lpyPQiWlGKHb7q"…}
мне нужен объект переделано как объект MediaStream и попытались следующие вещи, которые потерпели неудачу:
Попытка 1: FAILED
var stream = new webkitMediaStream;
function loadStream(thisStream) {
stream = thisStream;
}
Попытка 2: FAILED
var stream;
function loadStream(thisStream) {
stream = new webkitMediaStream(thisStream);
}
Попытка 3: FAILED
var stream;
function loadStream(thisStream) {
stream = Object.create(webkitMediaStream, thisStream);
}
Примечание: Конструктор для объекта MediaStream
ISwebkitMediaStream
.
Мне нужен либо лучший метод для передачи объекта из сценария расширения (единственного места, с которого работает метод chrome.tab.capture()
), в сценарий содержимого (единственное место, где есть доступ и может изменять элементы DOM на странице) ,
ИЛИ
Мне нужна способ переделки сериализированного объекта JSON обратно в полностью функциональный MediaStream
объекта.
Заранее благодарен!
JRad Плохие