2016-06-28 7 views
0

У меня есть очень простой необходимости, мне нужно, чтобы породить WebWorker с небольшим Uri данных сценария:Создание работника из данных URI

new Worker('data:,console.log("HI")'); 

В Firefox это дает мне вместо ошибки. Ошибка:

SecurityError: Failed to load worker script at "data:,console.log("HI")" 

Есть ли какой-нибудь способ заставить работника работать с URI данных?

+0

Аргумент для 'Worker()' - это URL-адрес сценария, а не код. https://developer.mozilla.org/en-US/docs/Web/API/Worker/Worker –

+0

Ваш фрагмент кода отлично работает для меня (в консоли, в любом случае) в Firefox 49 (но, очевидно, не в Chrome). Какую версию ты используешь? – iamnotmaynard

+0

@iamnotmaynard спасибо за тестирование! То, что я закончил донг, было использовать «Blob.createObjectURL», а затем запустить этого работника. – Noitidart

ответ

1

Вы можете определенно попробовать Freelancer, которые:

  • Принимает function, что она превращается в строку, используя Function.prototype.toString
  • Создает IIFE из переданной функции и передает какие-либо дополнительные аргументы
  • Превращает функцию в Blob с application/javascript как тип
  • Создает новый рабочий с URI данных, созданным с помощью URL.createObjectURL.

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

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