Saya sedang mencuba iframe
标记内显示 PDF 预览时遇到问题。我有一个页面包含一些 iframe
s 以在页面中显示 PDF 文件,问题是有时源 URL 中不存在 PDF,因此 iframe
显示 XML 错误,指出 BlobNotFound
。如果在 iframe
的源代码中返回该错误,我想隐藏 iframe
.
Saya mencuba skrip JavaScript berikut:
<script> const myIframe = document.getElementById('myFrame1'); fetch('example.xml') .then(response => { if (!response.ok) { throw new Error('XML file not found'); } return response.text(); }) .then(xmlString => { const parser = new DOMParser(); const xmlDoc = parser.parseFromString(xmlString, "text/xml"); // check for errors in the XML content const error = xmlDoc.getElementsByTagName("parsererror"); if (error.length > 0) { myIframe.style.display = 'none'; // hide the iframe if there is an error } }) .catch(error => { console.error(error); myIframe.style.display = 'none'; // hide the iframe if there is an error }); </script>
Kod ini berfungsi, tetapi hanya jika anda menyatakannya melalui ID iframe
标记,并且我想重写此代码以一次检查所有 iframe
.
Saya juga mencuba kod berikut:
<script> const iframes = document.getElementsByTagName('iframe'); for (let i = 0; i < iframes.length; i++) { const iframe = iframes[i]; fetch(iframe.src) .then(response => { if (!response.ok) { throw new Error('XML file not found'); } return response.text(); }) .then(xmlString => { const parser = new DOMParser(); const xmlDoc = parser.parseFromString(xmlString, "text/xml"); // check for errors in the XML content const error = xmlDoc.getElementsByTagName("parsererror"); if (error.length > 0) { iframe.style.display = 'none'; // hide the iframe if there is an error } }) .catch(error => { console.error(error); iframe.style.display = 'none'; // hide the iframe if there is an error }); } </script>
Kod ini sepatutnya berfungsi, tetapi entah bagaimana ia menyembunyikan semua iframe
s walaupun ia tidak mempunyai ralat.
P.S. Ini adalah ralat XML untuk mana-mana iframe
yang tidak dapat memaparkan PDF.
<?xml version="1.0" encoding="utf-8"?> <Error> <Code>BlobNotFound</Code> <Message> The specified blob does not exist. RequestId:xxxxxxxx Time:timestamp </Message> </Error>
Anda boleh mencuba ini!
Sila beritahu saya jika ia berkesan.