首頁  >  問答  >  主體

阻止或偵測 iframe 上的下載

<p>我遇到了一個對我來說很常見的問題,但我找不到正確的解決方案。 </p> <p>我有一個透過 iframe 顯示的文件。頂部有一個工具欄,最終用戶可以在其中下載文件。現在我想記錄有關下載的資訊(因此我可能需要一些事件)或停用下載選項。 </p> <p>我知道我可以通過添加 #toolbar=0 來禁用整個工具欄,但最終用戶可以自己更改它,並且仍然下載文檔而不記錄它,所以這對我來說不是一個合適的解決方案。 </p >
P粉819533564P粉819533564436 天前978

全部回覆(1)我來回復

  • P粉369196603

    P粉3691966032023-09-01 14:46:55

    如果您對 iframe 不感興趣,則可以使用 embedobject 標記來防止此類工具列出現。

    對於 iframe,如果您想要停用下載功能,您可能最終會得到特定於瀏覽器的內容,因為不同的瀏覽器會將 iframe 轉換為不同的元素以實際呈現 PDF。如果您確切知道正在處理的瀏覽器,您可以嘗試從下載按鈕解除監聽器的綁定,這是我在 Chrome 中測試過的解決方案,該解決方案似乎有效:

    var old_element = document.getElementById("viewer").shadowRoot.getElementById("toolbar").shadowRoot.getElementById("downloads").shadowRoot.getElementById("download");
    var new_element = old_element.cloneNode(true);
    old_element.parentNode.replaceChild(new_element, old_element);

    感謝 Ben D 對這個有關偵聽器刪除的問題的回答,如果你想沿著日誌記錄路線走下去,你可以用 addEventListener 取代cloneNode和replaceChild步驟。我認為這仍然會導致足夠精明/堅定的用戶能夠下載PDF 的問題(請參閱這篇文章的附加資訊:https://www.w3docs.com/snippets/html/how-to-embed-pdf -in-html.html< /a>),因此根據您的最終目標,我建議為訪客使用者呈現PDF 的靜態影像預覽,而完整檢視器可能僅限於登入使用者。

    回覆
    0
  • 取消回覆