2015-03-15 1 views
0

Я пытаюсь построить расширение chrome, которое может записать текущую вкладку с помощью chrome.desktopCapture.chooseDesktopMedia и передать запись в файл default_popup.В расширениях Chrome можно просмотреть и отобразить экран во всплывающем окне?

В настоящее время я получаю URL-адрес объекта потока в скрипте содержимого, передавая его в фоновый скрипт, чтобы выполнить некоторые проверки, а затем передать его снова в popup.js, который является файлом javascript для моего всплывающего окна. поток работает и отображается как видео, когда воспроизводится на DOM страницы, и передача объекта тоже не проблема.

, но кажется, что объектURL не может получить доступ к видео из всплывающего окна! есть ли способ обойти это?

Это ошибка я получил при проверке консоли Всплывающее в:

блоб: HTTPS% 3A // developer.chrome.com/5363c96d-69ff-4e91-8d06-48f1648ad0e4 Не удалось загрузить ресурс: сервер ответил статусом 404 (не найдено)

+0

Не знаете, почему это было проголосовано, кажется, что это законная проблема ... –

ответ

1

Я только что узнал, как это сделать.

Чтобы перенести ссылки blob на скрипты и вкладки в chrome-расширениях, вы должны сначала отправить запрос xmlhttp, чтобы захватить blob с исходного URL-адреса blob, созданного на другом скрипте. а затем воссоздайте URL-адрес blob из этого блоба на текущей странице.

например.

//originalURL is the bloburl from your content script 
//in your popup script, call this 
var request=new XMLHttpRequest(); 
request.open('GET', originalURL); 
request.responseType='blob'; 
request.send(); 
request.onload=function(){ 
var newURL=URL.createObjectURL(request.response); 
} 
//newURL is the bloburl which can not be used on your popup script, you can set it as the soure of a video etc... 

Надеюсь, это поможет кому-то!

0

Спасибо @jasonY за рабочее решение. В моем случае мне нужно было отправить ObjectURL из фонового сценария в сценарий содержимого.

async function reissueObjectURL (url) { 
    return new Promise((resolve, reject) => { 
     var request = new XMLHttpRequest(); 
     request.open('GET', url); 
     request.responseType = 'blob'; 
     request.onload =() => { 
      resolve(URL.createObjectURL(request.response)); 
      URL.revokeObjectURL(url); 
     }; 
     request.send(); 
    }); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^