Я работаю над приложением Chrome, и у меня есть файл сценария, сохраненный в изолированной файловой системе приложения. (Он доступен по URL-адресу filesystem:chrome-extension_****/Persistent/script.js
Я могу использовать FileSystemAPI Chrome для чтения файла в главном окне приложения. Однако мне нужно, чтобы он был доступен и исполнялся на изолированной странице.
У меня есть следующее в моем манифесте -
"sandbox": {
"pages": ["sandboxed_page.html"],
"content_security_policy": "sandbox allow-scripts;"
},
И я использую страницу следующим образом:
<iframe id="sandbox_frame" seamless="seamless" src="sandboxed_page.html" sandbox="allow-scripts"></iframe>
Я попытался загрузить файл в главном окне приложения, использовал window.URL.createObjectURL()
, чтобы преобразовать его в большой двоичный объект: URL-адрес, и передал этот URL-адрес через postMessage()
в песочницу. В песочнице я пытаюсь загрузить URL-адрес в элемент <script>
. Я получаю сообщение об ошибке Not allowed to load local resource: blob:chrome-extension%3A//...
Другой вариант (который работает) — загрузить содержимое script.js в основное приложение и отправить всю строку через postMessage(). Не уверен, что это хорошая идея, так как script.js может стать довольно большим.
Я что-то делаю не так, или загрузка локальных скриптов в песочницах запрещена политиками безопасности Chrome?
Я просмотрел https://developer.chrome.com/apps/app_external, но там нет упоминания отправки внешних ресурсов в песочницу.