From 939deaef3d15689bc375856fc06a72d2506c28be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=93=E5=8F=91=E5=8F=97=E9=95=BF=E7=94=9F?= Date: Tue, 8 May 2018 21:29:14 +0800 Subject: [PATCH] =?UTF-8?q?ajax=E8=B0=83=E7=94=A8=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../layout/_partial/header.ejs | 2 +- .../source/css/_partial/header.styl | 7 +- themes/hexo-theme-xups/source/js/comment.js | 155 ++++-------------- .../hexo-theme-xups/source/js/local_search.js | 10 +- 4 files changed, 45 insertions(+), 129 deletions(-) diff --git a/themes/hexo-theme-xups/layout/_partial/header.ejs b/themes/hexo-theme-xups/layout/_partial/header.ejs index e1b13d5..949256b 100644 --- a/themes/hexo-theme-xups/layout/_partial/header.ejs +++ b/themes/hexo-theme-xups/layout/_partial/header.ejs @@ -22,7 +22,7 @@
-
+
  • {{article.title}} diff --git a/themes/hexo-theme-xups/source/css/_partial/header.styl b/themes/hexo-theme-xups/source/css/_partial/header.styl index ff0bc69..1e09963 100644 --- a/themes/hexo-theme-xups/source/css/_partial/header.styl +++ b/themes/hexo-theme-xups/source/css/_partial/header.styl @@ -44,10 +44,11 @@ width 300px max-height 600px overflow-y auto - background #eee - border 1px solid #333 + background #f3f3f3 + box-shadow: -2px 3px 9px 0px #939393; border-radius 5px word-break break-all + display none padding 7px ul list-style none @@ -55,7 +56,7 @@ margin-top 0 a.search-result-title color #3272b5 - font-size 18px + font-size 16px p.search-result font-size 14px margin 0.6em 0 diff --git a/themes/hexo-theme-xups/source/js/comment.js b/themes/hexo-theme-xups/source/js/comment.js index e632edc..babf834 100644 --- a/themes/hexo-theme-xups/source/js/comment.js +++ b/themes/hexo-theme-xups/source/js/comment.js @@ -709,6 +709,18 @@ var JELON = window.JELON || {}; $('JELON__previewBox').innerHTML = ''; } }; + var createSuccessCb = function(callback){ + return function (res) { + if (typeof res === 'string') { + if (window.JSON) { + res = JSON.parse(res); + } else { + res = eval('(' + res + ')'); + } + } + callback && callback(res); + } + } JL.Requests = { getIssueNumberByLabel: function (label, callback) { ajax({ @@ -718,19 +730,8 @@ var JELON = window.JELON || {}; labels: [ label ], rnd: Math.random() }, - success: function (res) { - if (typeof res === 'string') { - if (window.JSON) { - res = JSON.parse(res); - } else { - res = eval('(' + res + ')'); - } - } - callback && callback(res); - }, - fail: function (err) { - callback && callback(err); - } + success: createSuccessCb(callback), + fail: callback }); }, createIssue: function (data, callback) { @@ -738,19 +739,8 @@ var JELON = window.JELON || {}; url: constants.API_HOST + '/repos/' + JL.options.owner + '/' + JL.options.repo + '/issues', method: 'POST', data: data, - success: function (res) { - if (typeof res === 'string') { - if (window.JSON) { - res = JSON.parse(res); - } else { - res = eval('(' + res + ')'); - } - } - callback && callback(res); - }, - fail: function (err) { - callback && callback(err); - } + success: createSuccessCb(callback), + fail: callback }); }, getCommentListByIssueNumber: function (number, data, callback) { @@ -758,19 +748,8 @@ var JELON = window.JELON || {}; url: constants.API_HOST + '/repos/' + JL.options.owner + '/' + JL.options.repo + '/issues/' + number + '/comments', method: 'GET', data: data, - success: function (res) { - if (typeof res === 'string') { - if (window.JSON) { - res = JSON.parse(res); - } else { - res = eval('(' + res + ')'); - } - } - callback && callback(res); - }, - fail: function (err) { - callback && callback(err); - } + success: createSuccessCb(callback), + fail: callback }); }, getReactionsByCommentId: function (id, data, callback) { @@ -781,19 +760,8 @@ var JELON = window.JELON || {}; url: constants.API_HOST + '/repos/' + JL.options.owner + '/' + JL.options.repo + '/issues/comments/' + id + '/reactions', method: 'GET', data: data, - success: function (res) { - if (typeof res === 'string') { - if (window.JSON) { - res = JSON.parse(res); - } else { - res = eval('(' + res + ')'); - } - } - callback && callback(res); - }, - fail: function (err) { - callback && callback(err); - } + success: createSuccessCb(callback), + fail: callback }); }, editIssue: function (number, data, callback) { @@ -801,19 +769,8 @@ var JELON = window.JELON || {}; url: constants.API_HOST + '/repos/' + JL.options.owner + '/' + JL.options.owner + '/issues/' + number, method: 'POST', data: data, - success: function (res) { - if (typeof res === 'string') { - if (window.JSON) { - res = JSON.parse(res); - } else { - res = eval('(' + res + ')'); - } - } - callback && callback(res); - }, - fail: function (err) { - callback && callback(err); - } + success: createSuccessCb(callback), + fail: callback }); }, markdown: function (data, callback) { @@ -821,12 +778,8 @@ var JELON = window.JELON || {}; url: constants.API_HOST + '/markdown', method: 'POST', data: data, - success: function (res) { - callback && callback(res); - }, - fail: function (err) { - callback && callback(err); - } + success: callback, + fail: callback }); }, getAccessToken: function (data, callback) { @@ -838,19 +791,8 @@ var JELON = window.JELON || {}; 'Accept': 'application/json' }, data: data, - success: function (res) { - if (typeof res === 'string') { - if (window.JSON) { - res = JSON.parse(res); - } else { - res = eval('(' + res + ')'); - } - } - callback && callback(res); - }, - fail: function (err) { - callback && callback(err); - } + success: createSuccessCb(callback), + fail: callback }); }, getUserInfo: function (data, callback) { @@ -858,19 +800,8 @@ var JELON = window.JELON || {}; url: constants.API_HOST + '/user', method: 'GET', data: data, - success: function (res) { - if (typeof res === 'string') { - if (window.JSON) { - res = JSON.parse(res); - } else { - res = eval('(' + res + ')'); - } - } - callback && callback(res); - }, - fail: function (err) { - callback && callback(err); - } + success: createSuccessCb(callback), + fail: callback }); }, createComment: function (number, data, callback) { @@ -878,19 +809,8 @@ var JELON = window.JELON || {}; url: constants.API_HOST + '/repos/' + JL.options.owner + '/' + JL.options.repo + '/issues/' + number + '/comments', method: 'POST', data: data, - success: function (res) { - if (typeof res === 'string') { - if (window.JSON) { - res = JSON.parse(res); - } else { - res = eval('(' + res + ')'); - } - } - callback && callback(res); - }, - fail: function (err) { - callback && callback(err); - } + success: createSuccessCb(callback), + fail: callback }); }, createReaction: function (commentId, data, callback) { @@ -898,19 +818,8 @@ var JELON = window.JELON || {}; url: constants.API_HOST + '/repos/' + JL.options.owner + '/' + JL.options.repo + '/issues/comments/' + commentId + '/reactions', method: 'POST', data: data, - success: function (res) { - if (typeof res === 'string') { - if (window.JSON) { - res = JSON.parse(res); - } else { - res = eval('(' + res + ')'); - } - } - callback && callback(res); - }, - fail: function (err) { - callback && callback(err); - } + success: createSuccessCb(callback), + fail: callback }); } }; diff --git a/themes/hexo-theme-xups/source/js/local_search.js b/themes/hexo-theme-xups/source/js/local_search.js index 9505359..370bdc5 100644 --- a/themes/hexo-theme-xups/source/js/local_search.js +++ b/themes/hexo-theme-xups/source/js/local_search.js @@ -1,5 +1,6 @@ (function(){ var articleDatas = null; +var resultDiv = null; new Vue({ el: "#search-box", data: { @@ -27,12 +28,18 @@ new Vue({ url: item.getElementsByTagName("url")[0].innerHTML, } }) + resultDiv = document.getElementById("search-result-box") }); }, watch: { queryText: function(newVal, oldVal) { this.searchResult.length = 0; - if(!newVal || !newVal.trim() || !articleDatas) return + if(newVal && newVal.trim() && articleDatas) { + resultDiv.style.display = "block" + } else { + resultDiv.style.display = "none" + return + } var keywords = newVal.trim().toLowerCase().split(/[\s\-]+/); var _this = this; articleDatas.forEach(function(article){ @@ -76,7 +83,6 @@ new Vue({ end = content.length; } var matchContent = content.substring(start, end); - debugger // 高亮关键字 keywords.forEach(function(keyword){ var keywordReg = new RegExp(keyword, "gi");