在我的应用程序中,可以生成PDF。创建和下载它们后,我使用的库不会处理它们。最终,在生成足够的PDF之后,存储的Blob数据变得如此之大,以至于使浏览器崩溃。
一种解决方案是在打印后刷新浏览器。但这确实会破坏用户体验,因为他们会丢失当前的打印参数。
解决方案是将打印参数存储在sessionStorage
或其他内容中,以便在刷新后将其恢复。
无论如何,最简单的解决方案是在完成打印后清除特定的blob数据,或清除所有blob数据。
这就是我看到的chrome:// blob-internals。第一项是我要删除的内容;该行下面的两项只是对Blob的URL引用。
我如何专门清除此内容或仅清除Javascipt中的所有斑点?
尝试执行以下操作:
handleDownload(filename, blob, url, e) {
e.preventDefault();
saveAs(blob, filename);
this.props.pdfPrint(false);
delete blob;
}
但这会导致Deleting local variable in strict mode
错误。尝试:
handleDownload(filename, blob, url, e) {
e.preventDefault();
saveAs(blob, filename);
this.props.pdfPrint(false);
URL.revokeObjectURL(url);
var test = {};
test = blob
delete test.blob;
}
这只是删除对Blob的引用之一,但不会删除其自身的Blob。
在阅读本文时,所有引用都必须先删除: