题
我是新来的应用程序,并且我确信,这是回答这样的地方但我还没有找到
我下载的应用程序2.0蚀插件,并高兴地看到它带有一个 启动项目.
然而,我感到惊讶的是,运行时,有一个unpleasent闪烁的...
- 该文本载荷,而不CSS第一
- 它需要一段时间,直到该选择框出现
(如果你没有看到闪烁,尝试和新闻 F5 刷新)
所有成熟的应用程序的应用程序似乎有一个装载之前,但是我没有找到一个简单、标准的方式来增加。
看来这个程序负荷,在这种秩序:(纠正我请如果我是混合起来,其只是我的猜)
- 基本布局HTML,
- 所有JavaScript和CSS
- 运行逻辑上"加载"事件(快的时间你编javaScript可以启动?)
所以我不能编程方式添加一个载微调之前的应用程序载有点抓住22于我
我错过一些基本的东西?是有一个最好的实践方式来增加,初步微调?
我想简单地添加一个div与animated gif,并在加载事件-把它藏起来。
但我敢肯定有更好的东西。
让我知道如果这是一个重复问题
更新:发现了这个 相关的问题, 不回答我,但...
解决方案
我已经处理这个问题之前通过不使用应用程序模块载CSS,但它直接加载的标记本身。如果你这样做,浏览器将总是载CSS第一,甚至在应用程序JS加载。
这意味着你会失去一位的灵活性和速度,但其唯一的解决方法,我已经使用为止。
编辑:额外的信息,因为我想要赏金:D
如果不删除的
<inherits name='com.google.gwt.user.theme.standard.Standard'/>
从你的module.gwt.xml 文件的,则应用程序标准的主题是装在JS文件,该文件应用程序造成的。这JS文件加载后HTML网页使,并注CSS后负荷。因此闪烁。
为了避免的闪烁,可以评论的了,线和插入您自己的样式表入 <head>
你HTML文件。这将确保你的CSS负荷之前HTML呈现,避免任何闪烁。如果你真的想要的应用程序的主题,你把它弄出来的 源代码.
使用一个微调与应用程序是相当容易的。一个简单的方法就是保持在一个div id在HTML文件本身。然后在 onModuleLoad()
, ,只是隐瞒,div通过调用 RootPanel.get("spinner").setVisible(false);
这应该表现出微调,直到应用程序负荷本身。
其他提示
我们这么做实行微调。
你把东西如下HTML下脚本行,你的申请(即。一个与nocache.js).例如:
<div id="loading">
<div id="loading-msg">
<img src="icons/loading-page.gif" lt="loading">
<span>Loading the application, please wait...</span>
</div>
</div>
然后你用你到达入口点进入网页使用DOM和消除这div。例如
final RootPanel loading = RootPanel.get("loading");
if (loading != null) {
DOM.removeChild(RootPanel.getBodyElement(),
loading.getElement());
}
Ehrann:我怕的做法在上面提到的答案是唯一的方法。应用程序不提供类似的功能,显示一个"装载"框架"飞"。我猜的一个原因是,这一要求不是以"共同"用于所有应用程序的用户,一个人可能会想要一个非常不同风格的"装载"比其他人。所以你必须做的是,通过自己。
你可以看看GXT展网页(基础上应用程序太): http://www.extjs.com/explorer/ 对于他们如何这样做。对于它的来源,下载电话分机应用程序2.1.0,包括SDK在这里: http://www.extjs.com/products/gxt/download.php 和检查样品/资源管理器文件夹后提取。详情见的编辑下:
编辑
检查的源代码 http://www.extjs.com/examples/explorer.html 你可以看到一个div id"装载".对于每一个样品(延伸视),GXT.hideLoadingPanel(loadingPanelId)是所谓的onAttach()(初始化),其中隐藏了载的框架。
检查的源代码的视 在这里,
检查的源代码的GXT.hideLoadingPanel 在这里,
您可以做它以类似的方式。
你可以把一个HTML加载的信息在主页(使用的风格属性或嵌入式标记的标题,以确保它的风格),并删除该信息一旦你的模块已载入,e。g。文件。获得().getBody()。setInnerHTML("")。后(),然后你本应用编程方式但是你想要的。