【问题标题】:How to change the application favicon in runtime?如何在运行时更改应用程序图标?
【发布时间】:2015-11-06 10:34:52
【问题描述】:

我需要在运行时根据品牌更改网站图标。当应用程序启动时,我调用 webservice 来建立品牌,然后我需要配置应用程序。我不知道如何更新网站图标 - 可以吗?

<link rel="shortcut icon" href="favicon-brand1.ico">

为了澄清我的需求背景 - 我的应用程序是 GWT 应用程序,要求是在完成加载之前根据域名(品牌)配置其外观。因此,我实现了 Web 服务,它为我提供了所有配置数据,如站点名称、站点描述(放置在元描述中的主机 HTML 页面中)和相关的网站图标。 我能够更新我的应用程序的元标记,但我找不到如何从 GWT 代码而不是使用 JavaScript 代码更新应用程序图标的解决方案。

【问题讨论】:

    标签: gwt


    【解决方案1】:

    您可以访问主机页面上的任何标签。

    所以这样的事情应该可以工作:

    NodeList<Element> nodes = Document.get().getElementsByTagName("link");
    for (int i = 0; i < nodes.getLength(); i++) {
      LinkElement link = LinkElement.as(nodes.getItem(i));
      if (link.getRel("shortcut icon") != null) {
        link.setHRef("favicon-brandNew.ico");
      }
    }
    

    【讨论】:

    • 我已经优化了上面的代码,现在看起来像这样:NodeList&lt;Element&gt; links = Document.get().getElementsByTagName("link"); for (int i = 0; i &lt; links.getLength(); i++) { LinkElement link = ((LinkElement) links.getItem(i)); if (link.getRel().equals("shortcut icon")) { link.setHref("favicon-brandNew.ico"); } }
    • 你说得对,我找错了标签。我会用你的代码更新我的答案!
    • 太棒了!感谢您的帮助!
    【解决方案2】:

    好吧,不确定您的应用程序的上下文,但我想如果您动态生成了这个,那么正确的事情就会发生。

    我的意思是在模型属性中指定文件名并在视图中使用它。

    所以,不要硬编码 - 查一下。

    所以你最终会得到类似......

    <link rel="shortcut icon" href="@model.BrandFavIcon">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-12
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 2010-11-02
      • 2014-01-22
      相关资源
      最近更新 更多