【问题标题】:Google Webfonts: how to unload fonts after loading them?Google Webfonts:加载字体后如何卸载字体?
【发布时间】:2015-02-27 21:43:57
【问题描述】:

目前我可以使用Google's Web Font loader 轻松加载网络字体:

WebFont.load({
    google: {
        families: ['Bree Serif']
    }
});

但是,以后是否可以从 DOM 中卸载字体和添加的元素,以便不再在页面上使用它们?
该项目的 Github 上的文档没有显示任何提供该功能的选项或方法。

【问题讨论】:

  • 这是我昨天回答的一个问题的死后复制品,提问者在收到答案后删除了这个问题。这有助于保持答案的完整性和公开性。

标签: javascript webfonts google-webfonts webfont-loader


【解决方案1】:

您可以简单地使用MutationObserver 来跟踪对 DOM 所做的更改,并在需要时删除添加的元素。
下面是一个简单的示例实现:

(function() {
  "use strict";
  var addedNodes = [];
  var observer = new MutationObserver(function(mutations) {
    mutations.forEach(function(mutation) {
      Array.prototype.forEach.call(mutation.addedNodes, function(node) {
        addedNodes.push(node);
      });
    });
    observer.disconnect();
  });
  loader.addEventListener('click', function() {
    observer.observe(document, {
      childList: true,
      subtree: true,
      addedNodes: true
    });
    //Two loads simply to demonstrate that's not a problem
    WebFont.load({
      google: {
        families: ['Bree Serif']
      }
    });
    WebFont.load({
      google: {
        families: ['Indie Flower']
      }
    });
    loader.disabled = true;
    remover.disabled = false;
  });

  remover.addEventListener('click', function() {
    addedNodes.forEach(function(node) {
      node.remove();
    });
    addedNodes = [];
    loader.disabled = false;
    remover.disabled = true;
  });
}());
body {
  text-align: center;
  background: aliceblue;
}
h1 {
  font-family: 'Indie Flower';
  font-size: 3em;
  color: cadetblue;
}
p {
  font-family: 'Bree Serif';
  color: crimson;
}
input[disabled] {
  display: none;
}
<script src="//ajax.googleapis.com/ajax/libs/webfont/1.5.10/webfont.js"></script>
<input id="loader" type="button" value="Click to load webfonts" />
<input id="remover" type="button" value="Remove loaded webfonts" disabled="true" />
<h1>Chapter 1</h1>
<p>Grumpy wizards make toxic brew for the evil Queen and Jack.</p>

【讨论】:

  • 那么这是一种在使用 100 种不同的 Google 字体时保持良好性能的方法吗?
猜你喜欢
  • 1970-01-01
  • 2018-11-22
  • 1970-01-01
  • 2013-11-08
  • 2011-06-13
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2013-10-14
相关资源
最近更新 更多