草庐IT

javascript - Foundation 6 - 控制台警告 : Tried to initialize magellan (any JS plugin) on an element that already has a Foundation plugin

coder 2024-07-19 原文

我使用 bower 安装了 Foundation 6。每次我使用任何 Foundation 6 - JavaScript based plugin 时,我都会在控制台中收到多个 warning

确切的警告:

Tried to initialize magellan on an element that already has a Foundation plugin.

我的脚本包括如下所示:

<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/what-input/what-input.js"></script>
<script src="bower_components/foundation-sites/dist/foundation.js"></script>
<script src="js/app.js"></script>
<script type="text/javascript">
        $(document).foundation();  
</script>

该警告由 foundation.js180 行的以下代码触发:

// For each plugin found, initialize it
    $elem.each(function () {
      var $el = $(this),
          opts = {};
      // Don't double-dip on plugins
      if ($el.data('zfPlugin')) {
        console.warn("Tried to initialize " + name + " on an element that already has a Foundation plugin.");
        return;
      }

我已经尝试从头开始重新安装,但还是不行。 Zurb Foundation Forum 中也有类似的问题,但目前还没有很好的答案。

我该如何解决?

最佳答案

更新

对于版本 6.4.*,所有 pluginsjs如果 $(document).foundation();,基于元素会起作用在 html 中提到文件。所以从app.js中删除它如果你写在里面。对于其他原因,请阅读以下说明。


尽管我早就在 comments 中提到了答案这个问题,我觉得还是多写几个点比较好。

安装时 Zurb Foundation 6使用 bower (命令行),它给你一个很好的 index.html开始页面,其中包含 <script>引用 external 的标签js 文件位于 root\js\app.js . app.js文件默认有以下代码:

$(document).foundation(); //invoke all jQuery based Foundation elements

所以基本上,您已经具备了开始的一切条件。

但是,在 Foundation 6 之前,这并不是它的工作方式,我也不知道这些变化。我没有仔细阅读 app.js 的内容因为我假设它是空的。我只是在我的 html 中采用了调用它们的旧方法。通过编写以下代码来访问页面:

<script type="text/javascript">
  $(document).foundation();
</script>

这种双重 引用了基于 jQuery 的 Foundation 元素引发了 warning在浏览器控制台。

解决方案是删除任一调用,但实际上删除了 external 中编写的代码由于以下原因,js 文件更有意义:

  1. 外部引用需要额外付费 http请求,非常轻微地增加宝贵的页面加载时间。如果可以,为什么不减少它。
  2. 必须尽早调用网站中基于 jQuery 的元素,以便每个元素都能立即获得原始形状。因此,在 html 页面中提及调用比请求外部文件调用更有意义。 所以,去掉外部js文件中提到的代码,就是你的app.js文件。警告会消失。
  3. 对于版本 6.4.*,所有 pluginsjs如果在 html 中提及,基于元素 起作用。文件。

关于javascript - Foundation 6 - 控制台警告 : Tried to initialize magellan (any JS plugin) on an element that already has a Foundation plugin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39076312/

有关javascript - Foundation 6 - 控制台警告 : Tried to initialize magellan (any JS plugin) on an element that already has a Foundation plugin的更多相关文章

随机推荐