gpt4 book ai didi

javascript - GWT 中是否有任何通知将要下载哪个片段

转载 作者:行者123 更新时间:2023-11-29 10:42:09 25 4
gpt4 key购买 nike

我们的 GWT 应用程序有各种片段,每个片段都非常大 (1+ MB)。我们想要做的是在 GWT 下载片段时显示进度条。我们正在使用基于 GWTP 的代码拆分。

我在 GWT 源代码中找不到任何与片段加载事件相关的内容。有没有人知道如何通知页面上的 Javascript 接下来要下载哪个片段?

最佳答案

没有任何直接的方法,但您基本上可以通过两种方式解决这个问题

1.- 扩展 CrossSiteIframeLinker并覆盖方法 getJsInstallScript()这样您就可以返回自定义的 javascript 内容,该内容可以以某种方式提醒用户有关正在加载的排列,或者只是显示一个微调器。请注意,您的脚本应包含类似于 installScriptEarlyDownload.js 的代码或 installScriptDirect.js

// Your linker class
public class MyXSILinker extends CrossSiteIframeLinker {
@Override
protected String getJsInstallScript(LinkerContext context) {
return "/your_namespace/your_script.js";
}
}

// your "/your_namespace/your_script.js" script
function installScript(filename) {
}

// your module file
<define-linker name="mylinker" class="...MyXSILinker" />
<add-linker name="mylinker" />

2.- 使用 window.__gwtStatsEvent功能。您可以在 index.html 中定义一个函数当加载应用程序的脚本将被添加到您的文档时启动加载微调器,然后使用您的 gwt 代码将其删除。

// In your index.html
<head>
<script>
window.__gwtStatsEvent = function(r) {
if (r.type == 'scriptTagAdded') {
d = document.createElement('div')
d.id = 'loading'
d.innerHTML = 'Loading...'
document.body.appendChild(d);
}
}
</head>
</script>

// In your EntryPoint class
Document.get().getElementById("loading").removeFromParent();

要显示准确的进度条非常困难,因为 <script>标签不支持进度事件。所以最好的方法应该是链接器使用 ajax 加载排列,这样你就可以在 xhr 中使用 html5 进度事件。对象。

我会使用 #2 方法来展示一个漂亮的带有 CSS 动画的微调器。

关于javascript - GWT 中是否有任何通知将要下载哪个片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26800010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com