2011-08-29 96 views
2

我有GWT模块,我做了一些东西,我有搜索结果 - 无论在哪种形式。现在搜索后,点击例如“导出到HTML”按钮,我想创建新的HTML页面(例如通过创建简单的字符串,其中仅包含搜索结果列表的结果列表中的客户端代码)并打开它新的浏览器窗口。我知道有Window.open(...)方法,但我必须指定我没有的url。我想通过客户端创建这个新的HTML页面 - 没有服务器推理(我不想在服务器端创建一些资源,然后将URL粘贴到此资源到客户端)。有没有可能做到这一点?如果没有选项,其他可以满足我的方法是打开标准对话框进行保存,这将允许将结果保存在html文件中。在客户端的新浏览器窗口GWT动态数据

感谢您的帮助。

亲切的问候。

回答

6

下面是我用打印的代码:

native void openPrintWindow(String contents) /*-{ 
    var printWindow = window.open("", "PrintWin"); 
    if (printWindow && printWindow.top) { 
     printWindow.document.write(contents); 
     printWindow.print(); 
     printWindow.close(); 
    } else { 
     alert("The print feature works by opening a popup window, but our popup window was blocked by your browser. If you can disable the blocker temporarily, you'll be able to print here. Sorry!"); 
    } 
}-*/; 

好像你可以使其适应你的目的有一些简单的重述,并通过删除调用打印()! contents变量只是保持平面的HTML。没有前往服务器的路线。

openPrintWindow("<h1>Search Results</h1><ol><li>etc..."); 
+0

谢谢,对我有用。 –

+0

这很好,但我有一个问题:当我点击按钮“导出到HTML”时,一切正常(新的HTML页面与搜索结果已打开),但在新的浏览器选项卡的标题栏是“连接...”文字始终。我可以保存我的新页面,没有任何问题,但是这个“正在连接...”没有什么问题。你有什么想法发生了什么?新选项卡中的url是我用来连接到我的整个GWT模块的,所以也许这个模块是在后台加载的(但是这样做的可能性很小 - 在eclipse开发模式中我没有任何有关的信息加载模块)谢谢 –

+0

这也发生在我身上 - 我添加了'printWindow.close()'(见编辑答案),一切都很好。 –

0

打开从客户JS新的窗口,允许用户保存从浏览器的另存为菜单数据生成内容的方法:URL方案,通过的println usualy未保存写打开的页面内容。但数据:网址只适用于现代浏览器。而且写入的内容应该很小,以适应浏览器的url长度限制。

举个例子来看这篇文章http://en.wikipedia.org/wiki/Data_URI_scheme#JavaScript

+0

感谢您的回复,我使用了Riley解决方案。 –

相关问题