正如在主題中所說的,我需要使用本地可用的Excel表格填寫一個Web表單。我已經使用python和autohotkey的組合,但我想要有一定程度的JavaScript控制,以正確處理加載時間和條件。作爲一個網站開發新手,我首先想到我可以擁有一個本地iframe來控制網站的表單,但我很快就發現XSS的東西不允許這樣的黑客攻擊。我無法訪問服務器。如何在Firefox中從webextension讀取本地文件?
我的經驗的最後一次迭代是與Firefox webextensions,我希望打開一個本地文件(通過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);
這可以作爲一個獨立的文件,但不能作爲彈出。我的webextension的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