GWT динамические данные в новом окне браузера на стороне клиента - PullRequest
2 голосов
/ 29 августа 2011

У меня есть модуль GWT, где я делаю кое-что и у меня есть результаты поиска - не имеет значения, в какой форме. Теперь, выполнив поиск и нажав, например, кнопку «Экспорт в HTML», я хотел бы создать новую HTML-страницу (например, из кода на стороне клиента, создав простую строку, содержащую только перечисленные результаты поиска в списке результатов), и открыть ее в новое окно браузера. Я знаю, что есть метод Window.open (...), но там я должен указать URL, которого у меня нет. Я хочу создать эту новую HTML-страницу на стороне клиента - без вывода на сервер (я не хочу создавать какой-либо ресурс на стороне сервера, а затем вставлять URL-адрес в этот ресурс на стороне клиента). Есть ли возможность этого добиться? Если нет никакой опции, другой способ, который меня удовлетворил бы, - это открыть стандартное диалоговое окно для сохранения, которое позволит сохранять результаты в html-файле.

Спасибо за помощь.

С уважением.

Ответы [ 2 ]

6 голосов
/ 29 августа 2011

Вот код, который я использую для печати:

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!");
    }
}-*/;

Похоже, вы могли бы адаптировать его для своих целей с помощью простого переписывания и удаления вызова print ()!Переменная contents просто содержит плоский HTML.Нет поездок на сервер.

openPrintWindow("<h1>Search Results</h1><ol><li>etc...");
0 голосов
/ 30 августа 2011

Метод открытия нового окна от клиента js, который позволяет пользователю сохранить сгенерированный браузером контент, сохраненный в меню, в виде данных: схема URL, контент, записанный на открытую страницу через println, обычно не сохраняетсяНо data: url работает только в современных браузерах.И написанный контент должен быть достаточно маленьким, чтобы соответствовать рестайтингу длины URL браузера.

См. Пример из этой статьи http://en.wikipedia.org/wiki/Data_URI_scheme#JavaScript

...