Iframe问题,我有一个PDF文件显示在我的网页上的PDF文件也显示了一个文本的CSS使用其不工作的ie

0aydgbwb  于 2023-06-07  发布在  其他
关注(0)|答案(6)|浏览(182)

http://jsfiddle.net/K4uEs/2/

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>Untitled Page</title>
    </head>
    <body>
        <div style="height:600px;width:1000px;position:relative;margin:auto;">
            <div style="position:absolute;top:30px;left:50px;height:100px;z-index:9999;background:red;">This is not visible </div>
             <iframe src="http://www.irs.gov/pub/irs-pdf/fw4.pdf" height="50%" width="100%"></iframe>
</div>
    </body>
    </html>
eulz3vhy

eulz3vhy1#

它在Firefox中工作,所以我不知道。
你有没有试过给iframe一个比前一个div小的z索引?

oknwwptz

oknwwptz2#

因为你不;在iframe上没有position:absolute,你在它前面的div上有它;
试试这个:

<div style="position:absolute;top:30px;left:50px;height:100px;z-index:9999;background:red;">This is not visible 
         <iframe src="http://www.irs.gov/pub/irs-pdf/fw4.pdf" height="50%" width="100%"></iframe>
</div>
mepcadol

mepcadol3#

我是通过你内部div的z索引来分析的,你试图将它放置在iframe上。
它不起作用,因为框架(包括IFrame)是原始窗口上的独立子窗口,所以无论你增加多少z索引,div只会在基础窗口中的对象索引中更高,并且永远不会在子窗口中的对象之上。
在你的特定情况下,这将是更复杂的事情,因为子窗口是由不同的程序绘制的(我假设是Acrobat Reader,但这将取决于你的计算机配置)。
另一个你通常无法定位任何东西的元素是OBJECT和EMBED --例如,想想flash,因为这个空间是由不同的程序绘制的。它可能在某些浏览器上工作,但它没有指定工作,并且在大多数浏览器中不工作。

bvuwiixz

bvuwiixz4#

问题很糟糕,但公认的答案是错误的...所以为了其他偶然发现这个的人的利益...
是的,你可以在iframe上覆盖一个层。
您可能想要这样做的原因:您可以这样做,以混合成一个圆形的矩形嵌入或捕捉点击事件(即通过透明层)。
这只是在iframe元素上放置另一个元素的问题。iframe元素没有什么特殊之处可以阻止这种情况。
然而,这与访问iframe本身内的内容或事件不同。这可能会受到限制,特别是如果iframe窗口的原点与包含窗口的原点不同,并且存在各种可能影响这一点的设置。
但无论如何,是的,覆盖iframe并不是一件大事。这是强制性的演示。
https://codepen.io/matp/pen/WNaVOmq

var overlay = document.querySelector('.overlay'),
    textArea = document.querySelector('textarea');

overlay.addEventListener('click', function () {
    textArea.textContent = textArea.textContent + '\n' + 'Overlay received click.';
});
.container {
  position: relative;
  display: inline-block;
}
.container iframe {
  width: 560px;
  height: 315px;
}
.container .overlay {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background-color: rgba(0, 128, 0, 0.5);
}

textarea {
  width: 600px;
  height: 200px;
  font-family: monospace;
}
<div class="container"><iframe src="https://www.youtube-nocookie.com/embed/e09xig209cQ"></iframe>
    <div class="overlay"></div>
</div>
<div><textarea></textarea></div>
daolsyd0

daolsyd05#

对于其他登陆这里的人来说,2011年的原始问题已经通过现代浏览器和现代HTML 4/5的使用得到了解决,因此最终现代浏览器将按照原始海报的要求正确地将红色框放置在iFrame中的PDF上方。根据2011年的第一个答案,FireFox可能会工作,但其他浏览器,如Internet Explorer按问题可能不会。对于您自己的测试,我建议将链接文件替换为https://africau.edu/images/default/sample.pdf,因为它目前没有CORS问题。

在这里,它的工作原理在IE更换现代边缘III+

每个浏览器可以是不同的绝对位置,所以在Chrome中,它将覆盖侧边栏和标题。

即使PDF由于CORS而不可见,覆盖层仍然应该作为其“绑定”到框架。(在真正的PDF查看器中,通常不可能绑定到PDF页面内容,除非注解编辑器可以为您执行此操作。)

mwkjh3gx

mwkjh3gx6#

PDF只有客户端有插件才能在浏览器打开**!
示例:Acrobat Reader、Chrome内置PDF Reader等。

提示/解答:将您的PDF文件转换为JPG文件,然后使用PageFlipFlash进行阅读。
示例:http://www.revistainpeople.com/edicoes

  • 提示二:*

你可以在Linux上使用这个命令轻松地转换PDF:convert sample.pdf sample.png

编辑:

如果你使用pageflip(flash),你不会有z-index属性的问题,它会正常工作,因为你会发现客户端上总是adobe flash player,而不是一些讨厌的插件来读取pdf。

相关问题