gpt4 book ai didi

java - 包含在 gwt.xml 中时如何跳过加载外部 JavaScript 库?

转载 作者:行者123 更新时间:2023-11-29 05:36:21 26 4
gpt4 key购买 nike

假设我想在我的 GWT 应用程序中使用外部 JavaScript 库。我可以在我的模块 xml 文件中包含 myjslib.js:

 <script src="myjslib.js"></script>

这就是问题所在:如果我的 GWT 应用程序不是完整页面应用程序,那么包含我的 GWT 应用程序的 html 页面可能已经加载了 myjslib.js 文件。

有没有办法告诉 GWT 如果页面上已经存在 myjslib.js 则不应加载它?

最佳答案

无法使用 .gwt.xml文件,但您可以在代码中执行此操作,访问文档的所有“<script>”标签并检查 src 是否存在。属性与您的库名称匹配。然后你可以使用 ScriptInjector 注入(inject)脚本 helper 。

    NodeList<Element> scripts = Document.get().getElementsByTagName("script");
for (int i = 0; i < scripts.getLength(); i++) {
Element e = scripts.getItem(i);
if (e.getAttribute("src").matches(".*myjslib.js")) {
return;
}
}
ScriptInjector.fromUrl("myjslib.js").inject();

[编辑]

正如@ThomasBroyer 在他的第一条评论中所说,加载脚本的最简单方法是添加 <script>标记在页面的头部。在 GWT 中使用脚本之前,确保脚本已加载的最可靠方法是知道已在 window 对象中设置了某些属性。例如,如果你想加载 jquery.js,你可以测试是否定义了 $wnd.jQuery。

[编辑]

在您的 Javascript 库中包含如下内容:

  window.myjslib = true;

在您的 Java 代码中:

  public void OnModuleLoad() {
if (isMyJsLibLoaded() == false) {
ScriptInjector.fromUrl("myjslib.js").inject();
}
}

private native boolean isMyJsLibLoaded() /*-{
return !!$wnd.myjslib;
}-*/;

关于java - 包含在 gwt.xml 中时如何跳过加载外部 JavaScript 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19439895/

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