当用户按下ctrl键时,我试图在Chrome中保存HTML文件,但Chrome崩溃了。
(我只想下载HTML文件的源代码)
我读到它发生是因为我的文件比1.99M大...
在第一次尝试中(在我知道Chrome崩溃之前):
function download(filename, text) {
var pom = document.createElement('a');
pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
pom.setAttribute('download', filename);
pom.click();
}
download('test.html', "<html>" + document.getElementsByTagName('html')[0].innerHTML + "</html>");
第二次尝试,在我读到崩溃后,我使用了blob
:
function dataURItoBlob(dataURI) {
var byteString = atob(dataURI.split(',')[1]);
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]
var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
var bb = new BlobBuilder();
bb.append(ab);
return bb.getBlob(mimeString);
}
function download(dataURI) {
var blob = dataURItoBlob(dataURI);
var url = window.URL.createObjectURL(blob);
window.location.assign(url);
}
download("<html>" + document.getElementsByTagName('html')[0].innerHTML + "</html>")
这里我得到了错误:未能在'Window'上执行'atob':要解码的字符串未正确编码。
我不知道,但我读到我需要将我的字符串编码为base 64:如何在JavaScript中将字符串编码为Base64?
有一个148票的答案,我把它贴在我的代码里,不知道怎么继续。
我应该在哪里调用它以及如何调用它?我可以在我保存的文件中输入一个名称吗?
我想我需要做一些事情,比如:
download(_utf8_decode("<html>" + document.getElementsByTagName('html')[0].innerHTML + "</html>"))
您不需要将整个编码字符串传递给atob方法,您需要拆分编码字符串并将所需字符串传递给atob方法
const token= "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJob3NzYW0iLCJUb2tlblR5cGUiOiJCZWFyZXIiLCJyb2xlIjoiQURNSU4iLCJpc0FkbWluIjp0cnVlLCJFbXBsb3llZUlkIjoxLCJleHAiOjE2MTI5NDA2NTksImlhdCI6MTYxMjkzNzA1OX0.8f0EeYbGyxt9hjggYW1vR5hMHFVXL4ZvjTA6XgCCAUnvacx_Dhbu1OGh8v5fCsCxXQnJ8iAIZDIgOAIeE55LUw"
console.log(atob(token.split(".")[1]));
这里我得到了错误:未能在'Window'上执行'atob':要解码的字符串未正确编码。
因为您没有传递Base64编码的字符串。查看您的函数:install
和dataURItoBlob
出于某种原因都期望数据URI;但是,您正在将纯html标记字符串传递给示例中的install
。
HTML不仅作为base64无效,而且您正在调用。拆分(',)[1]
,这将产生未定义的字符串,并且“未定义”也不是有效的base64编码字符串。
我不知道,但我读到我需要将字符串编码为base64
这对我来说没什么意义。你想以某种方式编码它,然后解码它?
我应该打什么电话,怎么打?
将下载函数的界面更改回它接收文件名和文本参数的位置。
请注意,BlobBuilder不仅支持附加整个字符串(因此不需要创建那些数组缓冲区),而且也不支持使用Blob构造函数。
我可以在保存的文件中输入名称吗?
是的。不要使用Blob
构造函数,而是File
构造函数。
function download(filename, text) {
try {
var file = new File([text], filename, {type:"text/plain"});
} catch(e) {
// when File constructor is not supported
file = new Blob([text], {type:"text/plain"});
}
var url = window.URL.createObjectURL(file);
…
}
download('test.html', "<html>" + document.documentElement.innerHTML + "</html>");
查看JavaScript blob文件名,没有关于如何处理该对象url的链接,只是将当前位置设置为它不起作用。
BlobBuilder已过时,请改用Blob构造函数:
URL.createObjectURL(new Blob([/*whatever content*/] , {type:'text/plain'}));
这将返回一个blob URL,然后可以在锚的href中使用该URL。您还可以修改锚点的“下载”属性来操作文件名:
<a href="/*assign url here*/" id="link" download="whatever.txt">download me</a>
摆弄。如果我没记错的话,对受信任的非用户发起的下载有任意限制;因此,我们将坚持使用被视为充分用户发起的链接单击:)
更新:保存当前文档的html实际上非常简单!每当单击我们的交互式链接时,我们都会用相关的blob更新其href。执行单击绑定事件后,将导航到该下载URL!
$('#link').on('click', function(e){
this.href = URL.createObjectURL(
new Blob([document.documentElement.outerHTML] , {type:'text/html'})
);
});
再次拨弄。
下面是目前为止我所想到的伪代码。任何帮助都将不胜感激!谢谢! 我检查了Table API,但对于流,似乎不支持很多操作,例如OrderBy。
你好,我正在尝试在不同的机器上使用SolrCloud。为此,我审阅了这些文件:这里 但我面临一个问题:无法找到或加载主类org。阿帕奇。动物园管理员。服务器法定人数。windows中的QuorumPeerMain 你能帮助如何在Windows上启动动物园管理员服务器吗? 请注意,我也尝试过在没有start word的情况下使用命令zkServer运行。
我是多克的新手。安装Docker工具箱(操作系统:Windows 10)后,我运行Docker快速入门终端,并在控制台中看到以下内容: 我做错了什么?所有系统和安装步骤的检查都是从这里开始的。 非常感谢您的帮助!
问题内容: 这是我的Javascript代码 这是我的HTML 我遇到错误 错误:无法在“窗口”上执行“ atob”:要解码的字符串未正确编码 问题答案: 我有我的问题。这对于其他用户使用javascript(AnguarJs)保存图像和压缩图像应该会有所帮助。 我正在流动此链接以压缩图像 Github https://github.com/oukan/angular-image- compres
我正在用Tkinter编写一个小程序,想打开两个窗口。然后我想在前面放一扇窗户。程序代码: 我做错了什么new.lift?新密码没有出现在前面:(有人知道如何把窗口放在前面,让窗口聚焦吗?