在包含Widget / Panel的GWT中打开一个新的浏览器窗口

时间:2010-06-09 20:17:04

标签: java gwt

我知道您可以使用Window.open()函数打开一个新的浏览器窗口,将其指向特定的URL。但是,是否可以打开包含GWT面板的新浏览器窗口?如果是的话,有人可以展示一个例子吗?

1 个答案:

答案 0 :(得分:1)

这是我的想法。我在纯JavaScript中实现它,但如果在JS中可以实现它,那么它也应该可以用GWT!

parent.html:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Parent page</title>
<script type="text/javascript">
    function openChild() {
            window.mychild = window.open("print.html");
            setTimeout('setContent();', 2000);
    }
    function setContent() {
            window.mychild.document.body.innerHTML = 
               '<b>Here is your dynamically generated print content</b>';
               // This could be produced by your main GWT module.
    }
</script>
</head>
<body>
    <a href="#" onclick="javascript:openChild()">Open child window</a>
</body>
</html>

print.html:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Print view</title>
</head>
<body>
    One moment please...
</body>
</html>

注意,我使用了超时。这并不理想,因为如果(非常小的)print.html需要更长的时间来获取,那么它将覆盖动态设置的内容。

我认为,可以优化解决方案(但要确保子窗口是从同一个源获取的,否则您将遇到“同源策略”问题)。