Я получаю пустую страницу при изменении свойства document.domain в html-файле приложения GWT - PullRequest
3 голосов
/ 28 февраля 2011

Здравствуйте, я разрабатываю приложение GWT, в котором есть фреймы.Я тестирую в localhost с Tomcat 6 и IE8.

Я изменил домен localhost (в файле hosts: C: \ WINDOWS \ system32 \ drivers \ etc \ hosts) на что-то 1.something2.com, так что теперь у меня естьв моем файле hosts:

127.0.0.1 что-то1.something2.com

Итак, я запускаю свой Tomcat6 в IE8 что-то1.something2.com:8080/mygwtapp и mygwtappработает нормальноПроблема заключается в том, что я изменяю document.domain в file.html GWT-приложения.В gui.html у меня есть это:

<html>
    <head>
        <title>...</title>
        <style>...</style>
        <script language="javascript">
            document.write(document.domain);    
            document.domain = "something2.com"
            document.write(document.domain);
        </script>
        <meta name='gwt:module' content='scripts/com.something2.gui=com.something2.gui'>
    </head>
    <body>
        <script language="javascript" src="scripts/gwt.js"></script>
        <iframe id="__gwt_historyFrame" style="width:0;height:0;border:0"></iframe>
        <table align=center>
            <tr>
                <td id="slot1"></td>
                <td id="slot2"></td>
            </tr>
        </table>

    </body>
</html>

Итак, я снова запускаю свое приложение с этим gui.html и получаю:

что-то1.something2.comsomething2.com

(так же, как это вверху). Это ожидаемо, но тогда все, что я получаю, это пустая страница.Поэтому я вижу строку выше и ничего больше, просто пустую страницу.

Я покажу вам gui.gwt.html:

<module>
    <!-- Specify the app entry point class.-->
    <entry-point class='com.something2.client.GUI'/>

    <inherits name='com.google.gwt.user.User'/> 
    <inherits name='com.google.gwt.user.User'/> 
    <inherits name="com.google.gwt.http.HTTP"/>
    <inherits name="com.google.gwt.xml.XML" />
    <servlet path='...' class='...l'/> // I have several servlets here, but I don't think they are causing issues here.
</module>

Что-то добавить: я работаю с iframes, которыесоздаются внутри Java-кода GWT, моя цель изменить домен, чтобы иметь возможность общаться с iframes, которые уже определили document.domain в его заголовке html-страницы как что-то 2.com (то же, что и я, или, по крайней мере, то же, что иЯ пытаюсь это сделать)

Итак, я не знаю, что я делаю здесь неправильно.

1 Ответ

2 голосов
/ 02 марта 2011

Это потому, что GWT загружает себя в iframe. Вы можете добавить эту строку в ваш gwt.xml файл для загрузки без фреймов:

<add-linker name="xs" />

Однако вы потеряете поддержку DevMode. Есть компоновщик xsiframe (который загружает код с использованием тегов <script> и вставляет в iframe, чтобы изолировать его от страницы), который поддерживает DevMode, но я не знаю, сработает ли он с настройкой document.domain.

...