Как указано в теме, мне нужно заполнить веб-форму, используя данные, доступные локально в качестве таблиц Excel. Я уже делаю это с помощью комбинации python и autohotkey, но я хочу иметь некоторый уровень управления JavaScript, чтобы правильно обрабатывать времена загрузки и условные обозначения. Как новичок в области веб-разработки, я сначала подумал, что могу просто иметь локальный iframe, контролирующий веб-сайт, на котором находится форма, но я обнаружил достаточно скоро, что вещь XSS, которая не допускает такого взлома. У меня нет доступа к серверу.Как читать локальный файл из webextension в Firefox?
Последняя итерация моего опыта связана с веб-расширениями Firefox, с которыми я надеялся открыть локальный файл (через виджет ввода файла html5), где ранее я написал свой код js для заполнения формы. Но, видимо, здесь есть и ограничения, и я не могу понять, какие документы я рассматриваю. Мой код в настоящее время так:
popup.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<input type="file" id="liquida-file" name="liquida">
<br>
<script src="background-script.js"></script>
</body>
</html>
фон-script.js
function handleFiles() {
var fileList = this.files; /* now you can work with the file list */
var myFile = fileList[0]
var reader = new FileReader();
reader.onloadend = function(evt){
if (evt.target.readyState == FileReader.DONE) { // DONE == 2
var filedata = evt.target.result;
console.error("Analyzing file data")
console.error(filedata)
var data = JSON.parse(filedata)
console.error(data)
}
};
reader.readAsText(myFile)
}
var inputElement = document.getElementById("liquida-file");
inputElement.addEventListener("change", handleFiles, false);
Это работает как отдельный файл, но не в качестве всплывающего окна. html-файл моего веб-расширения. В этом случае ни одна из строк console.error не будет достигнута. Кстати, вот мой manifest.json:
manifest.json
{
"manifest_version": 2,
"name": "My extension",
"version": "1.0",
"description": "Retrieve local data.",
"homepage_url": "http://Nonefornow",
"icons": {
"48": "icons/beautiful-icon.png"
},
"permissions": [
"activeTab"
],
"browser_action": {
"browser_style": true,
"default_icon": "icons/icon.png",
"default_title": "My Ext",
"default_popup": "popup.html"
}
}
Есть ли более простой способ сделать то, что я делаю? Я ожидал, что такая вещь станет общей потребностью, я ошибаюсь? И почему мой код не работает?
Какие разрешения я должен установить, то? – Tiago