2010-10-04 63 views
2

我正在尋找編譯我的gwt應用程序到一個單一的,單片,跨瀏覽器兼容的.html文件。最終,我試圖通過gwt設計一個亞馬遜機械turk模板。這些模板必須是單一的.html文件,因爲它們託管在亞馬遜的機器上。 .html文件可以引用外部源,但只能通過絕對地址,因爲我無法控制文件層次結構。gwt編譯爲單一,整體跨瀏覽器html文件

它並不關心單個文件的加載速度比每個瀏覽器的單獨文件都要慢。我正在開發一個相當簡單的Web表單,其中僅包含極少數人可以看到的客戶端代碼。因此,速度和跨瀏覽器的正確性不是主要問題。

我已經發現,通過添加以下行到我的MODULE_NAME.gwt.xml我可以生成(如下圖所示如Firefox)的單個瀏覽器的工作原理完全單一的JavaScript文件:

<set-property name="user.agent" value="gecko"> 

我然後將生成的代碼嵌入到我的.html文件中,並且它適用於指定的單個瀏覽器。不幸的是,當我嘗試在其他瀏覽器中打開.html文件時,gwt生成的javascript不會加載。

有沒有一個鏈接器命令,我可以添加到這個文件,將做的伎倆?我試圖通過調用SingleScriptLinker:

<add-linker name="sso" /> 

而且得到了以下錯誤:

[ERROR] The module must have exactly one distinct permutation when using the Single Script Linker.

我也試圖調整生成的JavaScript文件的內容,以使他們足夠的兼容嵌入.html文件,但由gwt生成的javascript太混亂了(即使在詳細的輸出模式下)。如何做到這一點有一個步驟?

我在OSX上使用gwt eclipse插件。

+0

這應該現在工作http://gwt-code-reviews.appspot.com/1678803 – mxro 2014-03-13 04:52:27

回答

2

由於幸運的是,我已經找到了解決辦法張貼我的問題後不久: http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/79e9634110487490

總之,答案是使用跨站點腳本。

  • 以下行添加到MODULE_NAME.gwt.xml:

    <附加連接器的名稱= 「XS」/>

GWT將生成MODULE_NAME.nocache.js文件以及一些MD5.cache.js文件(注意MD5文件以.js結尾,而不是.html)。

  • 編譯應用程序

  • 現在,把所有的服務器A上

  • 這些.js文件的修改您的MODULE_NAME.html文件包含的絕對引用MODULE_NAME.nocache.js在服務器A上。

  • 上傳MODULE_NAME.html到服務器B.

跨站點鏈接程序使一切正常。