[英]document.execCommand ..SaveAs issue with hidden elements.,
document.execCommand('SaveAs',false,'fileName'+“ .txt”);
我正在尝试使用javascript中的上述命令将页面保存到文件中。
问题:页面上有一些隐藏元素。CSS样式[display:none],因此当我尝试使用上述命令保存页面内容时,它也会写隐藏元素的内容。
任何想法如何摆脱隐藏元素的内容。 我们是否可以传递其他任何参数,以告知不要保存隐藏元素的内容,
任何帮助表示赞赏。
PS:我不想从DOM中删除隐藏的元素内容。 这不是一个选择。
谢谢,本
有人有其他答案吗?
这是我想出的
克隆文档,然后删除所有类名称都指定为隐藏或不想保存的内容的节点。 在我的情况下,我使用了类名“ hidden”。 removeElementsByClass遍历克隆的文档并删除所有不良节点。 现在,在对象newDoc上运行exec,保存此克隆并精简的文档。
var newDoc = document.getElementsByTagName("html")[0].cloneNode(true);
removeElementsByClass(newDoc, 'hidden');
newDoc.execCommand('SaveAs', false,'fileName' + ".txt");
function removeElementsByClass(object, class)
{
var elementArray = [];
if (object.all)
{
elementArray = object.all;
}
else
{
elementArray = object.getElementsByTagName("*");
}
var matchedArray = [];
var pattern = new RegExp("(^| )" + class + "( |$)");
for (var i = 0; i < elementArray.length; i++)
{
if (pattern.test(elementArray[i].className))
{
elementArray[i].parentNode.removeChild(elementArray[i]);
}
}
}
未经测试...但我唯一的想法是:
但这似乎是一件很艰苦的工作……“删除”此隐藏内容的原因是什么? 也许我们可以提供更好的解决方案?
例如,如果这是出于“安全性”,以确保用户看不到不应看到的内容,那么这是一种不好的方法……最好不要首先呈现内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.