我正在自定义chrome扩展程序(Google Dictionary)的功能,我想通过按下按钮来保存我查找文本文件的每个单词。当前功能执行以下代码是将用户键入的每个单词保存在单独的文件中,并询问保存文件的位置。但我想将每个单词附加到一个永久性的日志文件中。在PHP中,这将非常容易,但是在javascript中这是有问题的,因为客户端脚本功能。我找到了solution,但这真的很复杂,我不知道如何实现它。任何其他解决方案/建议将不胜感激。
<!DOCTYPE html>
<html>
<input type="text" id="inputTextToSave"><button id="define-btn" class="btn btn-primary" value="Define" onclick="saveTextAsFile()">Define</button>
<script type='text/javascript'>
function saveTextAsFile()
{
var textToWrite = document.getElementById("inputTextToSave").value;
var textFileAsBlob = new Blob([textToWrite], {type:'text/plain'});
var downloadLink = document.createElement("a");
downloadLink.download = "log.txt";
downloadLink.innerHTML = "Download File";
downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob);
downloadLink.click();
}
</script>
</html>
答案 0 :(得分:1)
这是一个建议:为什么不将它保存在localStorage(或存储,具体取决于您的文件大小),而不是这样做。
然后在您的扩展程序的后台页面中,提供一个选项,使用常规文件对话框将这些单词下载为文件。
答案 1 :(得分:1)
您可以使用Html 5 web storage。事实上它适用于所有主流浏览器。以防你想将你的应用程序扩展到其他浏览器。然后,您可以将读取的数据从存储写入文件。 Chrome Storage
答案 2 :(得分:0)
所以,如果有人对脚本解决方案感兴趣:
<!DOCTYPE html>
<html>
<input type="text" id="inputTextToSave"><button id="define-btn" class="btn btn-primary" value="Define" onclick="saveTextAsFile()">Define</button>
<script type='text/javascript'>
function saveTextAsFile()
{
var textToWrite = document.getElementById("inputTextToSave").value;
var textToWriteOld = localStorage.getItem("inputTextStorage");
if(textToWriteOld === null) textToWriteOld = "";
localStorage.setItem("inputTextStorage", textToWriteOld + "\n" + textToWrite);
var textFileAsBlob = new Blob([localStorage.getItem("inputTextStorage")], {type:'text/plain'});
var downloadLink = document.createElement("a");
downloadLink.download = "log.txt";
downloadLink.innerHTML = "Download File";
downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob);
downloadLink.click();
}
</script>
</html>
任何其他改进也将受到赞赏。