2

这是一个奇怪的问题,可能主要与 Internet Explorer 和 Adob​​e PDF 阅读器有关。在其他浏览器和 PDF 阅读器上,我没有遇到这个问题。例如,使用 Chrome 及其内置的 PDF 阅读器,我没有遇到这个问题。

我在“框架”对象中打开一个 PDF 文档,当我关闭框架时,PDF 不会消失。基本上 PDF 仍然存在,直到我关闭浏览器。

有没有人注意到?是否有任何技巧可以确保正确关闭 PDF?

这是一个屏幕截图,请注意 PDF 仍然漂浮在那里。

使用下面的代码,是否可以轻松地将该逻辑转换为使用 HTML 'object' 标签?

这是大部分代码,本质上是在框架中弹出一个弹出窗口:

import com.google.gwt.user.client.ui.Frame;

        final Frame centerDocumentFrame = new Frame();
        final SafeUri uri = new SafeUri() {
                    @Override
                    public String asString() {
                        return "/path/PATH_TO_PDF";
                    }
        };
        centerDocumentFrame.setUrl(uri);

        final Window gridPopup = new Window();
        gridPopup.setWidget(centerDocumentFrame);
        gridPopup.setMaximizable(true);
        gridPopup.setClosable(true);
        gridPopup.setResizable(true);

<iframe class="gwt-Frame GL2YXWTBNL GL2YXWTBLFC" 
src="PDF" style="left: 360px; top: 0px; width: 431px; height: 358px;"/>

关闭时,PDF 文档就在那里。

注意:这可能是 Internet Explorer 和 Adob​​e Reader 的问题。显然,使用这种类型的动态 iFrame 并用 PDF 填充它,然后关闭,Adobe 没有正确释放该屏幕。有什么解决办法吗?我们还试图避免使用对象标签来支持 iframe

环境:

Gxt 版本:3.0.1
GWT:2.5.1
Windows 7
Internet Explorer 9(无怪癖模式)
Tomcat 7
Adob​​e Reader 版本 10.10

更多细节在这里:

http://www.sencha.com/forum/showthread.php?267784-Issue-with-popup-Window-on-Internet-Explorer-and-iFrame-and-Adobe-Reader-PDF-document

有关的:

http://social.msdn.microsoft.com/Forums/ie/en-US/8ff26bbd-9471-4137-ac6a-ff34ee02ab74/iframepdf-not-hiding-in-ie10

4

2 回答 2

3

你能试试这个吗:(我扩展了 Frame 以便能够从 Event.ONLOAD 上的 DOM 中删除它)。例如,我用它来模仿“下载文件”。这可能是解决此 IE9 错误的方法。

public class HiddenFrame extends Frame {

    public HiddenFrame(String url) {
        super();
        //setSize("0px", "0px");
        //setVisible(false);
        sinkEvents(Event.ONLOAD);
        RootPanel.get().add(this);
        setUrl(url);
    }

    public void onBrowserEvent(Event event) {
        if (DOM.eventGetType(event) == Event.ONLOAD) {
            unsinkEvents(Event.ONLOAD);
            DOM.eventCancelBubble(event, true);
            RootPanel.get().remove(this);
        } else {
            super.onBrowserEvent(event);
        }
    }

}
于 2013-07-19T09:41:36.437 回答
1

我遇到了完全相同的问题。对我来说唯一的解决方法是从 中删除所有内容RootLayoutPanel并再次添加。

RootLayoutPanel.get().clear();
RootLayoutPanel.get().add(new MyPanel());
RootLayoutPanel.get().forceLayout();

如果您有一个在位置和大小上完全包裹 pdf 的面板,您可以尝试将其设置为不可见然后可见。但是,我不确定这是否会有所帮助

编辑

调整包含 iFrame 的组件的大小也可能有效,它对我有用。

于 2013-07-16T09:27:32.950 回答