saber 酱的抱枕

Fly me to the moon

04/3
2024
软件

解决 WP Githuber MD 导致的一处 JS 报错

刚才我注意到文章页面的控制台有个报错:

一看是有一处 js 代码没判空,费了好大劲才找到是插件 WP Githuber MD 添加的代码,将其删除或修改就好了。

当时的网页源码是这样的,上面红框处的代码导致了错误:

我一看它的作用其实和下面我自己加的“在新标签页打开超链接”是一模一样的,但是它有个地方没判空导致了报错。

<script id="preference-link-target">
  (function($) {
    $(function () {
      $(".post").find("a").each(function () {
        var link_href = $(this).attr("href");
        // link_href 没判空,如果是 undefined 就会报错
        if (link_href.indexOf("#") == -1) {
          $(this).attr("target", "_blank");
        }
      });
    });
        })(jQuery);
</script>

坑就坑在当时不知道这个代码是哪里来的,在模板里这里是 wp_footer() 函数,那只能在其他文件里找了,我在模板目录里左找右找都没找到,最后才发现是在 plugins 里。

/wp-content/plugins/wp-githuber-md/src/Views/assets/js.php

由于我自己写了这个功能代码了,所以我把里面的内容清空了,这样就不会报错了。

也可以在 link_href 后面加个问号,改成 link_href?.indexOf 就可以修复这个错误。

感谢插件作者写的低质量代码。其实该插件还有个 js 文件里有相同的代码,不过这个 js 文件只影响编辑器,不会影响前台页面,所以我就懒得改了。如果你也用这个插件,可以在插件目录里使用命令grep -R link_href * 搜索出来。

解决 WP Githuber MD 导致的一处 JS 报错