簡體   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