document.execCommand('SaveAs',false,'fileName'+“。txt”);
我正在尝试使用javascript中的上述命令将页面保存在文件中。
问题:我在页面上有一些隐藏的元素.CSS样式[display:none],所以当我尝试使用上面的命令保存页面内容时,它也会写入隐藏的元素内容。
任何想法如何摆脱隐藏的元素内容。是否有任何其他参数我们可以传递,这将告诉不要保存隐藏的元素内容。,
感谢任何帮助。
PS:我不想从DOM中删除隐藏的元素内容。它不是一种选择。
谢谢, 本
有没有人有任何其他答案..
答案 0 :(得分:1)
这就是我提出的
克隆文档,然后删除具有类名的所有节点,该类名将其指定为隐藏,或者删除您不想保存的内容。在我的例子中,我使用了类名“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]);
}
}
}
答案 1 :(得分:0)
未经测试......但我唯一的想法是:
但这似乎是一项相当大的工作......“删除”这些隐藏内容的原因是什么?也许我们可以提供更好的解决方案?
e.g。如果这是为了“安全”以确保用户不会看到他们不应该看到的东西,那么这是一个糟糕的方法...最好不要首先渲染内容。