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

全部回覆(1)
P粉369196603

如果您對 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),因此根據您的最終目標,我建議為訪客使用者呈現PDF 的靜態影像預覽,而完整檢視器可能僅限於登入使用者。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!