feat: 去除 jQuery (fancybox和圖庫 仍需要加載jQuery)

feat: 點擊文字特效增加隨機配置
feat: 可配置是否添加css前綴
fix: 修復子目錄下,配置justifiedGallery CDN(相對鏈接)後,連接會無法訪問的bugs
fix: 修復 pangu 配置post 後,仍在全站生效的bugs
improvement: 夜間模式下,廣告降低亮度
improvement: 手機端toc邊距微調
improvement: html格式優化
improvement: 搜索優化
improvement: 刪除不必要的語言文件
This commit is contained in:
Jerry
2020-11-21 00:27:01 +08:00
parent 7f03c3f716
commit 88b1cc553c
64 changed files with 969 additions and 795 deletions

View File

@@ -1,18 +1,14 @@
$(function () {
window.addEventListener('load', () => {
let loadFlag = false
const openSearch = function () {
$('body').css({
width: '100%',
overflow: 'hidden'
})
$('#local-search .search-dialog').css('display', 'block')
$('#local-search-input input').focus()
$('#search-mask').fadeIn()
document.body.style.cssText = 'width: 100%;overflow: hidden'
document.querySelector('#local-search .search-dialog').style.display = 'block'
document.querySelector('#local-search-input input').focus()
btf.fadeIn(document.getElementById('search-mask'), 0.5)
if (!loadFlag) {
search(GLOBAL_CONFIG.localSearch.path)
loadFlag = true
}
// shortcut: ESC
document.addEventListener('keydown', function f (event) {
if (event.code === 'Escape') {
@@ -23,60 +19,48 @@ $(function () {
}
const closeSearch = function () {
$('body').css({
width: '',
overflow: ''
})
$('#local-search .search-dialog').css({
animation: 'search_close .5s'
})
setTimeout(function () {
$('#local-search .search-dialog').css({
animation: '',
display: 'none'
})
}, 500)
$('#search-mask').fadeOut()
document.body.style.cssText = "width: '';overflow: ''"
const $searchDialog = document.querySelector('#local-search .search-dialog')
$searchDialog.style.animation = 'search_close .5s'
setTimeout(() => { $searchDialog.style.cssText = "display: none; animation: ''" }, 500)
btf.fadeOut(document.getElementById('search-mask'), 0.5)
}
// click function
const searchClickFn = () => {
$('a.social-icon.search').on('click', openSearch)
$('#search-mask, .search-close-button').on('click', closeSearch)
document.querySelector('#search-button > .search').addEventListener('click', openSearch)
document.getElementById('search-mask').addEventListener('click', closeSearch)
document.querySelector('#local-search .search-close-button').addEventListener('click', closeSearch)
}
searchClickFn()
// pjax
window.addEventListener('pjax:complete', function () {
$('#local-search .search-dialog').is(':visible') && closeSearch()
getComputedStyle(document.querySelector('#local-search .search-dialog')).display === 'block' && closeSearch()
searchClickFn()
})
function search (path) {
$.ajax({
url: GLOBAL_CONFIG.root + path,
dataType: 'xml',
success: function (xmlResponse) {
// get the contents from search data
const datas = $('entry', xmlResponse).map(function () {
fetch(GLOBAL_CONFIG.root + path)
.then(response => response.text())
.then(str => new window.DOMParser().parseFromString(str, 'text/xml'))
.then(data => {
const datas = [...data.querySelectorAll('entry')].map(function (item) {
return {
title: $('title', this).text(),
content: $('content', this).text(),
url: $('url', this).text()
title: item.querySelector('title').textContent,
content: item.querySelector('content').textContent,
url: item.querySelector('url').textContent
}
}).get()
})
const $input = $('#local-search-input input')[0]
const $resultContent = $('#local-hits')[0]
const $input = document.querySelector('#local-search-input input')
const $resultContent = document.getElementById('local-search-results')
$input.addEventListener('input', function () {
let str = '<div class="search-result-list">'
const keywords = this.value.trim().toLowerCase().split(/[\s]+/)
$resultContent.innerHTML = ''
if (this.value.trim().length <= 0) {
$('.local-search-stats__hr').hide()
return
}
if (this.value.trim().length <= 0) return
let count = 0
// perform local searching
datas.forEach(function (data) {
@@ -141,7 +125,6 @@ $(function () {
str += '<div class="local-search__hit-item"><a href="' + dataUrl + '" class="search-result-title">' + dataTitle + '</a>'
count += 1
$('.local-search-stats__hr').show()
if (dataContent !== '') {
str += '<p class="search-result">' + matchContent + '...</p>'
@@ -158,7 +141,6 @@ $(function () {
$resultContent.innerHTML = str
window.pjax && window.pjax.refresh($resultContent)
})
}
})
})
}
})