繁体   English   中英

带有隐藏元素的document.execCommand ..SaveAs问题。

[英]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]);
        }
    }
}

未经测试...但我唯一的想法是:

  • 结束通话...
  • 使用整个DOM的“纯”副本保存变量...
  • 去除隐藏的元素,例如removeChild(),其中display:none被设置
  • 执行保存
  • 将DOM重置为原始

但这似乎是一件很艰苦的工作……“删除”此隐藏内容的原因是什么? 也许我们可以提供更好的解决方案?

例如,如果这是出于“安全性”,以确保用户看不到不应看到的内容,那么这是一种不好的方法……最好不要首先呈现内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM