6

У меня есть сайт и расширение Google Chrome. Расширение использует API NaCl (JavaScript) для записи/чтения файлов (C++) с компьютера пользователя.Как использовать функции расширения Chrome (NaCl) на моем веб-сайте?

Мой вопрос: могу ли я загрузить мое расширение на своем веб-сайте, например, в iFrame и сохранить его функции?

Я попытался это сделать, но он загружает только расширенную «визуальную» часть. Функции write/read (NaCl) не работают.

пример, чтобы лучше объяснить, что я хочу сделать:

Это на самом деле работает так: enter image description here

Я хотел бы сделать это: enter image description here

Or это по-другому, но я думаю, что это невозможно, не так ли? enter image description here

Возможно ли это? Как мне это сделать?

EDIT

Вот код:

В manifest.json я кладу это:

"externally_connectable": { 
    "matches": ["http://www.example.com/index.html"] 
}, 

"web_accessible_resources": [ 
    "/*" 
], 
"content_scripts" : [ 
    { 
     "matches" : ["http://www.example.com/index.html"], 
     "js": ["index.js"] 
    } 
], 

моего веб-сайта Iframe:

<iframe src="chrome-extension://myextensionid/index.html"></iframe> 

В моем файле index.js для расширения есть две кнопки. Их функции (JavaScript) связываются с .cc файлом (через NaCl) для сохранения или загрузки строки в файл на компьютере.

Как я уже сказал, расширение работает нормально, но когда я пытаюсь загрузить его на своем веб-сайте через iframe, он загружает только html (визуальный). JavaScript не загружает, следовательно, C++, ни при условии, что JS вызывает функции C++ с помощью NaCl.

Любое решение?

+0

график может помочь кому-то еще, но у меня возникают проблемы при разборе его. Почему бы вам не отправить образец кода, чтобы другие могли воспроизвести проблему, которую вы видите? – sowbug

+0

@sowbug - я обновил свой вопрос. – Dehumanizer

+0

Вы пытались добавить «all_frames»: true в content_scripts? –

ответ

3
<embed name="nacl_module" id="nacl_module" width="100%" height="100%" path src="//storage.googleapis.com/gonacl/demos/publish/236779/voronoi/voronoi.nmf" type="application/x-pnacl"> 

И выше тег в этом IFRAME:

<iframe frameborder="0" width="100%" height="100%" src="/static/voronoi/index.html"> 

Это из https://gonativeclient.appspot.com/demo/voronoi

Также https://gonativeclient.appspot.com/static/voronoi/example.js содержит сценарий, как это делается.

Я сделал 10-минутный поиск, чтобы найти это. Просто знать, что NaCl не будет работать в других браузерах.

Если вы хотите чистый javascript, который будет работать на всех браузерах. Используйте этот фрагмент ниже. Он создает ссылку, которая при нажатии на нее загружает текстовый файл, содержащий данные text. Добавьте атрибут `.innerHTML ', например« Сохранить », а затем щелкните его.HTML5 не имеет ограничений для длинных атрибутов.

var file = document.createElement('a'); 
file.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); 
file.setAttribute('download', filename); 

Вы можете иметь переменную text быть установлен из многострочного текстового поля и с KeyEvent, который обновляет его значение. То же самое касается имени файла, например. Msgstr "Сохраненный черновик. Вы можете экспериментировать с другими типами данных, кроме текста/plain. Чтобы проверить другие типы, найдите то, что заголовок может взять в поле данных.

Для загрузки файла вы можете проверить это http://www.html5rocks.com/en/tutorials/file/dndfiles/

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