解决next主题开启pjax时使用hexo-blog-encrypt无效

方案一

next主题开启 pjax 时 从首页跳转至文章页面输入密码后无法正常显示文章解决方案

  1. 编辑主题下的 _config.yml 将Jquery的CDN地址换为cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js
  2. 编辑layout/script/pjax.swig

    selectors: [
    'head title',
    '#hexo-blog-encrypt', #这里添加一行
    '#page-configurations',
    '.content-wrap',
    '.post-toc-wrap',
    '.languages',
    '#pjax'
     ],

    方案二 推荐

    本修改适用于Next 8.0及以下版本

  • 编辑next/layout/_script/pjax.njk

    //添加以下代码
    var dynamicLoading = {
      css: function(path){
            if(!path || path.length === 0){
              throw new Error('argument "path" is required !');
            }
            var head = document.getElementsByTagName('head')[0];
            var link = document.createElement('link');
            link.href = path;
            link.rel = 'stylesheet';
            link.type = 'text/css';
            head.appendChild(link);
      },
      js: function(path){
        if(!path || path.length === 0){
          throw new Error('argument "path" is required !');
        }
        var head = document.getElementsByTagName('head')[0];
        var script = document.createElement('script');
        script.src = path;
        script.type = 'text/javascript';
        head.appendChild(script);
      }
    }
  • 在 pjax:success 方法里添加(推荐在 NexT.utils.updateSidebarPosition();后添加)

    // 如果存在 博客加密
    if(document.getElementById("hexo-blog-encrypt")){
        //动态加载 CSS 文件
        dynamicLoading.css("/css/blog-encrypt.css");
        //动态加载 JS 文件
        dynamicLoading.js("/lib/blog-encrypt.js");
    }

0 条评论