如何将localStorage数据写入Chrome中的文本文件

6 javascript html5 google-chrome-extension

我想将localStorage项写入文本文件,并希望调用用户将文件存储在指定位置.请帮我扩展代码

  var data = JSON.parse(localStorage.getItem(pid));   
  var Text2Write = "";
  for(var pr in ele)
  {
     var dat = pr + ":" + ele[pr] + "\n";
     Text2Write += dat;
  }
  // Here I want to store this Text2Write to text file and ask user to save where he wants.  
Run Code Online (Sandbox Code Playgroud)

请帮我扩展这段代码.

小智 7

我发现这个console.save(data,[filename])方法可以添加到控制台,非常容易实现.请注意,下载文件时,它会直接进入默认下载文件夹.要添加它,只需运行:

(function(console){

    console.save = function(data, filename){

        if(!data) {
            console.error('Console.save: No data')
            return;
        }

        if(!filename) filename = 'console.json'

        if(typeof data === "object"){
            data = JSON.stringify(data, undefined, 4)
        }

        var blob = new Blob([data], {type: 'text/json'}),
            e    = document.createEvent('MouseEvents'),
            a    = document.createElement('a')

        a.download = filename
        a.href = window.URL.createObjectURL(blob)
        a.dataset.downloadurl =  ['text/json', a.download, a.href].join(':')
        e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null)
        a.dispatchEvent(e)
    }
})(console)
Run Code Online (Sandbox Code Playgroud)

然后像这样传递数据和文件名,console.save(data,[filename]),然后创建和下载文件.

资源:

https://plus.google.com/+AddyOsmani/posts/jBS8CiNTESM

http://bgrins.github.io/devtools-snippets/#console-save


Emi*_*röm 4

如果您不想使用服务器端解决方案(当然不必是 PHP),最简单的方法是使用数据 URI:

data:text/plain,Your text here
Run Code Online (Sandbox Code Playgroud)

这将在浏览器中显示文本文件,并让用户将其保存在他们想要的位置。我认为不可能为此类 URI 显示“另存为”对话框。

注意:这至少需要 IE8。但我猜这就是您的要求,因为您正在使用 localStorage。