PDF将弹出窗口遮挡的问题(<div> layer on top of PDF)
? ? ? 之前也做过在线显示PDF的任务,这次的比较棘手:PDF的组件将弹出窗口挡住了。
? ? ? 想过好几种解决办法,最后终于找到一个比较好的解决办法:
? ? ? 下面重新理一理这两天尝试过的一些方法:
? ? ? (1)改变PDF的样式,就是使用z-index来控制。
? ? ? ? 这无疑是首先想到的方法。无奈从网上搜了很久,也不知道用来显示PDF的<object>标签是个什么样式。在它外面设置一个比dialog小的z-index也不对。于是此方法告吹。
? ? ? ?(2)http://stackoverflow.com/questions/593176/div-layer-on-top-of-pdf?给了我一个解决方法,于是这个bug开始有点眉目。
? ? ? ? ? 从网上看到这么一段话:在IE5.5版本中,IFrame就开始作为一个Windowless元素使用了,使用z-index就可以将DIV覆盖IFrame,但是如果IFrame中有Windowed对象,如ActiveX控件时,IFrame就变成一个Windowed元素,DIV就只能在IFrame后边混了。应该是解释为什么同样是iframe,PDF还是会把div遮挡住,stackFlow里面给出了一个解决方法。
? ? ? ? ? 但此方法在我这里暂时行不通。行不通的症结在于:弹出的dialog始终位于窗口正中央,如何定义一个iframe,和他同样大小 且 也位于正中央,这是个问题。并且,如何对各个分辨率的电脑都适用也是个问题。
? ? ? ?(3)借用第三个的原理,但是可以不设置position:absolute 和 z-index。这个方法就是:如果有一个dialog弹出,就定义一个空白的dialog用iframe包住先于他弹出,借用他来遮盖住底下的PDF。
? ? ? ? ?事实证明这个方法是可行的。把空白的iframe定义成dialog的好处在于:不用操心这个遮挡层的弹出位置在哪里,而且容易操作。
?
? ? ? ? ?这个bug出现最初,我是先把pdf部分隐藏掉,需要的时候再显示出来。但这个必然用户是不接受的。后来也曾想过,既然这pdf的样式改不了,那么当dialog出现的时候,将pdf部分变成图片,静态显示在下面可不可以。但是这个方法需要导入一些jar包,对整体影响比较大,于是也没有实行这个计划。
?
? ? ? ? 解决了这个bug,又重新认识了 iframe, 学问还是很大的。
?