在JavaScript中保存或显示长字符串

RPF*_*ltz 5 javascript string firefox

我正在使用Mozilla Firefox的控制台在博客上运行一些JavaScript,以便对其进行有组织的转储,并将其存储为字符串变量.该字符串包含大约5000条消息,因此它很长.我想以某种方式在计算机上保存这个字符串; 这部分可以使用JavaScript之外的方法在外部完成.

我想到以下选项:

  1. 将字符串保存为txt文件.
  2. 将字符串的内容保存到剪贴板,将其粘贴到记事本中,然后保存.
  3. 使用控制台的输出并从那里复制它.
  4. 显示提醒,然后从那里复制.
  5. 创建一个新的HTML页面,将字符串作为正文并在新窗口中显示,然后从那里复制它.

但是,我不知道如何在JavaScript中执行1和2,字符串对于选项3和4来说太长了(3我抱怨当我扩展它时字符串太大,4被截断),而我不知道该怎么做5.

有什么建议?先感谢您.

Lua*_*ver 7

你可以做的是使用标签的新HTML5"下载"属性.如果将属性设置为文件名,则单击时,不会转到文件,而是使用文件名下载该文件.这有什么用?那么,你也可以使用'数据'方案.如果你有这个:

<a href="data:text/plain,This is an example message." download="example.txt">click to download</a>
Run Code Online (Sandbox Code Playgroud)

它将导致文件下载.如果你使用JavaScript创建一个标签,隐藏它,将href设置为"data:text/plain,YourString",然后下载到"blogDump.txt",然后使用click方法,它将导致它下载.

编辑:示例!

var link = document.createElement('a');
link.setAttribute('href', 'data:text/plain,Example');
link.setAttribute('download', 'example.txt');
link.click();
Run Code Online (Sandbox Code Playgroud)

编辑2:FireFox不喜欢被点击的DOM中没有的链接.第二个例子:

var link = document.createElement('a');
link.setAttribute('href', 'data:text/plain,Example');
link.setAttribute('download', 'example.txt');
document.getElementsByTagName("body")[0].appendChild(link).click();
Run Code Online (Sandbox Code Playgroud)


The*_*ris 7

我不知道Firefox的控制台,但是Chrome的控制台暴露了一个copy()方法,它会将任意大小的字符串放在剪贴板上

  • 这很棒!出于好奇,以下是对各种浏览器中 copy() 命令的引用:[Chrome](https://developer.chrome.com/devtools/docs/commandline-api#copyobject)、[Firefox](https:// developer.mozilla.org/en-US/docs/Tools/Web_Console#Helper_commands),[Safari](https://developer.apple.com/library/ios/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/Console/Console.html )。Internet Explorer 似乎不支持 copy(),因此您必须使用其他答案中的方法之一。 (2认同)

Buz*_*nas 5

  1. 您无法使用纯Javascript保存TXT文件.
  2. 您无法使用纯Javascript(仅限IE,或使用Flash hack)将字符串保存到剪贴板
  3. 你已经说过它太大了
  4. 同上3
  5. 这很像蛋糕:

    var newWindow = window.open("");
    var body = newWindow.document.body;
    var text = "innerText" in body ? "innerText" : "textContent";
    body[text] = "YOUR STRING GOES HERE";
    
    Run Code Online (Sandbox Code Playgroud)

FIDDLE示例