1 Star 0 Fork 0

Aaron/个人博客

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
404.html 31.20 KB
一键复制 编辑 原始数据 按行查看 历史
Aaron 提交于 2023-03-16 20:43 . Site updated: 2023-03-16 20:43:28
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946
<!DOCTYPE html>
<html lang="en">
<!-- Head tag (contains Google-Analytics、Baidu-Tongji)-->
<head>
<!-- Google Analytics -->
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async="async" src="https://www.googletagmanager.com/gtag/js?id=UA-xxxxxx-xx"></script>
<script type="text/javascript">
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'UA-xxxxxx-xx');
</script>
<!-- Baidu Tongji -->
<script type="text/javascript">
// Originial
var _hmt = _hmt || [];
(function () {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
<!-- Baidu Push -->
<script>
(function () {
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
} else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="google-site-verification" content="lxDfCplOZbIzjhG34NuQBgu2gdyRlAtMB4utP5AgEBc"/>
<meta name="baidu-site-verification" content="PpzM9WxOJU"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="description" content="It&#39;s an IT blog..."/>
<meta name="keyword" content="starlight830,starlight,aaron,blog,Blog"/>
<link rel="shortcut icon" href="/img/avatar/roguerabbit.jpg"/>
<!-- Place this tag in your head or just before your close body tag. -->
<script async="async" defer="defer" src="https://buttons.github.io/buttons.js"></script>
<!-- Bootstrap Core CSS -->
<link rel="stylesheet" href="/css/bootstrap.min.css"/>
<!-- Custom CSS -->
<link rel="stylesheet" href="/css/beantech.min.css"/>
<!-- Pygments Highlight CSS -->
<link rel="stylesheet" href="/css/highlight.css"/>
<link rel="stylesheet" href="/css/widget.css"/>
<link rel="stylesheet" href="/css/rocket.css"/>
<link rel="stylesheet" href="/css/signature.css"/>
<link rel="stylesheet" href="/css/catalog.css"/>
<link rel="stylesheet" href="/css/livemylife.css"/>
<!-- wave start -->
<link rel="stylesheet" href="/css/wave.css"/>
<!-- wave end -->
<!-- top start (article top hot config) -->
<link rel="stylesheet" href="/css/top.css"/>
<!-- top end -->
<!-- ThemeColor start -->
<link rel="stylesheet" href="/css/scroll.css"/>
<!-- ThemeColor end -->
<!-- viewer start (Picture preview) -->
<link rel="stylesheet" href="/css/viewer.min.css"/>
<!-- viewer end -->
<!-- Search start -->
<link rel="stylesheet" href="/css/search.css"/>
<!-- Search end -->
<!-- ThemeColor start -->
<link rel="stylesheet" href="/css/themecolor.css"/>
<!-- ThemeColor end -->
<!-- gitalk start -->
<!-- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css"> -->
<link rel="stylesheet" href="/css/gitalk.css"/>
<!-- gitalk end -->
<!-- Custom Fonts -->
<!-- <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css"> -->
<!-- Hux change font-awesome CDN to qiniu -->
<link rel="stylesheet" href="https://cdn.staticfile.org/font-awesome/4.5.0/css/font-awesome.min.css" type="text/css">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!-- Hux Delete, sad but pending in China <link href='http://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'> <link
href='http://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/ css'> -->
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]> <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> <![endif]-->
<!-- ga & ba script hoook -->
<link rel="canonical" href="https://starlight830.gitee.io/404.html">
<title>
starlight830
</title>
<meta name="generator" content="Hexo 5.4.0"></head>
<!-- hack iOS CSS :active style -->
<body ontouchstart="" class="body--light body--dark">
<!-- ThemeColor -->
<!-- ThemeColor -->
<style type="text/css">
.body--light {
--light-mode: none;
--dark-mode: block;
}
.body--dark {
--light-mode: block;
--dark-mode: none;
}
i.mdui-icon.material-icons.light-mode {
display: var(--light-mode);
}
i.mdui-icon.material-icons.dark-mode {
display: var(--dark-mode);
}
</style>
<div class="toggle" onclick="document.body.classList.toggle('body--dark')">
<i class="mdui-icon material-icons light-mode"></i>
<i class="mdui-icon material-icons dark-mode"></i>
</div>
<script>
//getCookieValue
function getCookieValue(a) {
var b = document.cookie.match('(^|[^;]+)\\s*' + a + '\\s*=\\s*([^;]+)');
return b
? b.pop()
: '';
}
let themeMode = 'dark';
if (getCookieValue('sb-color-mode') && (getCookieValue('sb-color-mode') !== themeMode)) {
let dbody = document.body.classList;
themeMode === 'dark' ? dbody.remove('body--dark') : dbody.add('body--dark');
}
//setCookieValue
var toggleBtn = document.querySelector(".toggle");
toggleBtn.addEventListener("click", function () {
var e = document.body.classList.contains("body--dark");
var cookieString = e
? "dark"
: "light";
var exp = new Date();
exp.setTime(exp.getTime() + 3 * 24 * 60 * 60 * 1000); //3天过期
document.cookie = "sb-color-mode=" + cookieString + ";expires=" + exp.toGMTString() + ";path=/";
});
</script>
<!-- Gitter -->
<!-- Gitter -->
<!-- Docs:https://gitter.im/?utm_source=left-menu-logo -->
<script>
((window.gitter = {}).chat = {}).options = {
room: 'your-community/your-room'
};
</script>
<script src="https://sidecar.gitter.im/dist/sidecar.v1.js" async defer></script>
<!-- Navigation (contains search)-->
<!-- Navigation -->
<nav class="navbar navbar-default navbar-custom navbar-fixed-top">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header page-scroll">
<button type="button" class="navbar-toggle">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">Live My Life</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<!-- Known Issue, found by Hux: <nav>'s height woule be hold on by its content. so, when navbar scale out, the <nav> will cover tags. also mask any touch event of tags, unfortunately. -->
<div id="huxblog_navbar">
<div class="navbar-collapse">
<ul class="nav navbar-nav navbar-right">
<li>
<a href="/">首页</a>
</li>
<li>
<a href="/archive/">
归档
</a>
</li>
<li>
<a href="/categories/">
分类
</a>
</li>
<li>
<a href="/about/">
关于
</a>
</li>
<li>
<a href="/tags/">
标签
</a>
</li>
<li>
<a class="popup-trigger">
<span class="search-icon"></span>搜索</a>
</li>
<!-- LangSelect -->
</ul>
</div>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
<!-- progress -->
<div id="progress">
<div class="line" style="width: 0%;"></div>
</div>
<script>
// Drop Bootstarp low-performance Navbar Use customize navbar with high-quality material design animation in high-perf jank-free CSS3 implementation
var $body = document.body;
var $toggle = document.querySelector('.navbar-toggle');
var $navbar = document.querySelector('#huxblog_navbar');
var $collapse = document.querySelector('.navbar-collapse');
$toggle.addEventListener('click', handleMagic)
function handleMagic(e) {
if ($navbar.className.indexOf('in') > 0) {
// CLOSE
$navbar.className = " ";
// wait until animation end.
setTimeout(function() {
// prevent frequently toggle
if ($navbar.className.indexOf('in') < 0) {
$collapse.style.height = "0px"
}
}, 400)
} else {
// OPEN
$collapse.style.height = "auto"
$navbar.className += " in";
}
}
</script>
<!-- Post Header (contains intro-header、signature、wordcount、busuanzi、waveoverlay) -->
<!-- Modified by Yu-Hsuan Yen -->
<!-- Post Header -->
<style type="text/css">
.body--light {
/* intro-header */
--intro-header-background-image-url-home: url('/img/header_img/newhome_bg.jpg');
--intro-header-background-image-url-post: url('img/header_img/404_bg.jpg');
--intro-header-background-image-url-page: url('/img/header_img/404_bg.jpg');
}
.body--dark {
--intro-header-background-image-url-home: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.2)), url('/img/header_img/newhome_bg.jpg');
--intro-header-background-image-url-post: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.2)), url('img/header_img/404_bg.jpg');
--intro-header-background-image-url-page: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.2)), url('/img/header_img/404_bg.jpg');
}
header.intro-header {
/*page*/
background-image: var(--intro-header-background-image-url-page);
/* background-image: url('/img/header_img/404_bg.jpg'); */
}
#signature {/*signature*/
background-image: url('/img/signature/vincent-white.png');
}
</style>
<!-- Main Content (Post contains
Pager、
tip、
socialshare、
gitalk、gitment、disqus-comment、
Catalog、
Sidebar、
Featured-Tags、
Friends Blog、
anchorjs、
) -->
<style type="text/css">
.body--light {
/* intro-header */
--intro-header-background-image-url-404: url('/img/header_img/404_bg.jpg');
}
.body--dark {
--intro-header-background-image-url-404: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.2)), url('/img/header_img/404_bg.jpg');
}
header.intro-header {
background-image: var(--intro-header-background-image-url-404);
}
</style>
<!-- Page Header -->
<header class="intro-header">
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1 ">
<div class="site-heading">
<h1>404</h1>
<!--<hr class="small">-->
<span class="subheading">I&#39;m sorry there is nothing that you want , but you can enjoy the scenery here ...</span>
</div>
</div>
</div>
</div>
</header>
<script>
document.body.classList.add('page-fullscreen');
</script>
<!-- Footer (contains ThemeColor、viewer) -->
<!-- Footer -->
<footer>
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
<ul class="list-inline text-center">
<li>
<a target="_blank" href="https://github.com/V-Vincen">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
<li>
<a target="_blank" href="https://twitter.com/V_Vincen_">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
<li>
<a target="_blank" href="https://www.instagram.com/v_vincen_">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-instagram fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
<li>
<a target="_blank" href="http://weibo.com/WVincen">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-weibo fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
</ul>
<p class="copyright text-muted">
Copyright &copy;
Aaron
2023
<br>
Theme by
<a target="_blank" rel="noopener" href="http://beantech.org">BeanTech</a>
<span style="display: inline-block; margin: 0 5px;">
<i class="fa fa-heart"></i>
</span>
re-Ported by
<a target="_blank" rel="noopener" href="https://v-vincen.life/">Live My Life</a>
|
<iframe style="margin-left: 2px; margin-bottom:-5px;" frameborder="0" scrolling="0" width="91px" height="20px" src="https://ghbtns.com/github-btn.html?user=V-Vincen&repo=V-Vincen.github.io&type=star&count=true"></iframe>
</p>
</div>
</div>
</div>
</footer>
<a id="rocket" href="#top" class=""></a>
<!-- jQuery -->
<script type="text/javascript" src="/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script type="text/javascript" src="/js/bootstrap.min.js"></script>
<!-- Custom Theme JavaScript -->
<script type="text/javascript" src="/js/hux-blog.min.js"></script>
<!-- catalog -->
<script async="true" type="text/javascript" src="/js/catalog.js"></script>
<!-- totop(rocket) -->
<script async="true" type="text/javascript" src="/js/totop.js"></script>
<!-- Busuanzi JavaScript -->
<script async="async" src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
<!-- Scroll start -->
<script async="async" type="text/javascript" src="/js/scroll.js"></script>
<!-- Scroll end -->
<!-- LangSelect start -->
<script type="text/javascript" src="/js/langselect.js"></script>
<!-- LangSelect end -->
<!-- Mouseclick -->
<script type="text/javascript" src="/js/mouseclick.js" content='The first step is as good as half over...,Laugh and grow fat...,Man proposes God disposes...,When all else is lost the future still remains...,Wasting time is robbing oneself...,Sharp tools make good work...,Cease to struggle and you cease to live...,A friend in need is a friend indeed...,Faith can move mountains...' color='#9933CC,#339933,#66CCCC,#FF99CC,#CCCCFF,#6666CC,#663399,#66CC99,#FF0033'></script>
<!-- ribbon -->
<script type="text/javascript" src="/js/ribbonDynamic.js"></script>
<!-- viewer start -->
<!-- viewer start (Picture preview) -->
<script async="async" type="text/javascript" src="/js/viewer/viewer.min.js"></script>
<script async="async" type="text/javascript" src="/js/viewer/pic-viewer.js"></script>
<!-- viewer end -->
<script>
// async load function
function async (u, c) {
var d = document,
t = 'script',
o = d.createElement(t),
s = d.getElementsByTagName(t)[0];
o.src = u;
if (c) {
o.addEventListener('load', function (e) {
c(null, e);
}, false);
}
s.parentNode.insertBefore(o, s);
}
// fastClick.js
async ("https://cdn.bootcss.com/fastclick/1.0.6/fastclick.min.js", function () {
var $nav = document.querySelector("nav");
if ($nav)
FastClick.attach($nav);
}
)
</script>
<!-- Because of the native support for backtick-style fenced code blocks right within the Markdown is landed in Github Pages, From V1.6, There is no need for Highlight.js, so Huxblog drops it officially. -
https://github.com/blog/2100-github-pages-now-faster-and-simpler-with-jekyll-3-0 - https://help.github.com/articles/creating-and-highlighting-code-blocks/ -->
<!-- <script> async ("http://cdn.bootcss.com/highlight.js/8.6/highlight.min.js", function () { hljs.initHighlightingOnLoad(); }) </script> <link href="http://cdn.bootcss.com/highlight.js/8.6/styles/github.min.css" rel="stylesheet"> -->
<!-- jquery.tagcloud.js -->
<!-- <script> // only load tagcloud.js in tag.html if ($('#tag_cloud').length !== 0) { async ("https://starlight830.gitee.io/js/jquery.tagcloud.js", function () { $.fn.tagcloud.defaults = { // size: { start: 1, end: 1, unit: 'em' }, color: {
start: '#bbbbee', end: '#0085a1' } }; $('#tag_cloud a').tagcloud(); }) } </script> -->
<!-- Search -->
<div class="popup search-popup local-search-popup">
<span class="popup-btn-close">
ESC
</span>
<div class="container">
<div class="row">
<!-- <div class="col-md-9 col-md-offset-1"> -->
<div class="col-lg-9 col-lg-offset-1 col-md-10 col-md-offset-1 local-search-content">
<div class="local-search-header clearfix">
<div class="local-search-input-wrapper">
<span class="search-icon">
<i class="fa fa-search fa-lg" style="margin: 25px 10px 25px 20px;"></i>
</span>
<input autocomplete="off" placeholder="搜索..." type="text" id="local-search-input">
</div>
</div>
<div id="local-search-result"></div>
</div>
</div>
</div>
</div>
<script src="/js/ziploader.js"></script>
<script>
// Popup Window;
var isfetched = false;
var isXml = true;
// Search DB path;
var search_path = "search.json";
if (search_path.length === 0) {
search_path = "search.xml";
} else if (/json$/i.test(search_path)) {
isXml = false;
}
// monitor main search box;
var onPopupClose = function (e) {
$('.popup').fadeOut(300);
$('#local-search-input').val('');
$('.search-result-list').remove();
$('#no-result').remove();
$('body').css('overflow', '');
}
function proceedsearch() {
$('.popup').fadeIn(300);
var $localSearchInput = $('#local-search-input');
$localSearchInput.attr("autocapitalize", "none");
$localSearchInput.attr("autocorrect", "off");
$localSearchInput.focus();
}
// get search zip version
$.get('/searchVersion.json?t=' + (+new Date()), function (res) {
if (localStorage.getItem('searchVersion') !== res) {
localStorage.setItem('searchVersion', res);
initSearchJson();
}
});
function initSearchJson() {
initLoad(['/search.flv'], {
loadOptions: {
success: function (obj) {
localStorage.setItem('searchJson', obj['search.json'])
},
error: function (e) {
return console.log(e)
}
},
returnOptions: {
'json': TYPE_TEXT
},
mimeOptions: {
'json': 'application/json'
}
})
}
// search function;
var searchFunc = function (search_id, content_id) {
'use strict';
isfetched = true;
var datas = JSON.parse(localStorage.getItem('searchJson'));
// console.log(search_id)
var input = document.getElementById(search_id);
var resultContent = document.getElementById(content_id);
var inputEventFunction = function () {
var searchText = input.value.trim().toLowerCase();
var keywords = searchText.split(/[\s\-]+/);
if (keywords.length > 1) {
keywords.push(searchText);
}
var resultItems = [];
if (searchText.length > 0) {
// perform local searching
datas.forEach(function (data) {
var isMatch = false;
var hitCount = 0;
var searchTextCount = 0;
var title = data.title
? data.title.trim()
: '';
var titleInLowerCase = title.toLowerCase();
var content = data.content
? data.content.trim().replace(/<[^>]+>/g, "")
: '';
var contentInLowerCase = content.toLowerCase();
var articleUrl = decodeURIComponent(data.url);
var date = data.date;
var dateTime = date.replace(/T/, " ").replace(/.000Z/, "");
var imgUrl = data.header_img;
var indexOfTitle = [];
var indexOfContent = [];
// only match articles with not empty titles
keywords.forEach(function (keyword) {
function getIndexByWord(word, text, caseSensitive) {
var wordLen = word.length;
if (wordLen === 0) {
return [];
}
var startPosition = 0,
position = [],
index = [];
if (!caseSensitive) {
text = text.toLowerCase();
word = word.toLowerCase();
}
while ((position = text.indexOf(word, startPosition)) > -1) {
index.push({position: position, word: word});
startPosition = position + wordLen;
}
return index;
}
indexOfTitle = indexOfTitle.concat(getIndexByWord(keyword, titleInLowerCase, false));
indexOfContent = indexOfContent.concat(getIndexByWord(keyword, contentInLowerCase, false));
});
if (indexOfTitle.length > 0 || indexOfContent.length > 0) {
isMatch = true;
hitCount = indexOfTitle.length + indexOfContent.length;
}
// show search results
if (isMatch) {
// sort index by position of keyword
[indexOfTitle, indexOfContent].forEach(function (index) {
index.sort(function (itemLeft, itemRight) {
if (itemRight.position !== itemLeft.position) {
return itemRight.position - itemLeft.position;
} else {
return itemLeft.word.length - itemRight.word.length;
}
});
});
// merge hits into slices
function mergeIntoSlice(text, start, end, index) {
var item = index[index.length - 1];
var position = item.position;
var word = item.word;
var hits = [];
var searchTextCountInSlice = 0;
while (position + word.length <= end && index.length != 0) {
if (word === searchText) {
searchTextCountInSlice++;
}
hits.push({position: position, length: word.length});
var wordEnd = position + word.length;
// move to next position of hit
index.pop();
while (index.length != 0) {
item = index[index.length - 1];
position = item.position;
word = item.word;
if (wordEnd > position) {
index.pop();
} else {
break;
}
}
}
searchTextCount += searchTextCountInSlice;
return {hits: hits, start: start, end: end, searchTextCount: searchTextCountInSlice};
}
var slicesOfTitle = [];
if (indexOfTitle.length != 0) {
slicesOfTitle.push(mergeIntoSlice(title, 0, title.length, indexOfTitle));
}
var slicesOfContent = [];
while (indexOfContent.length != 0) {
var item = indexOfContent[indexOfContent.length - 1];
var position = item.position;
var word = item.word;
// cut out 100 characters
var start = position - 20;
var end = position + 80;
if (start < 0) {
start = 0;
}
if (end < position + word.length) {
end = position + word.length;
}
if (end > content.length) {
end = content.length;
}
slicesOfContent.push(mergeIntoSlice(content, start, end, indexOfContent));
}
// sort slices in content by search text's count and hits' count
slicesOfContent.sort(function (sliceLeft, sliceRight) {
if (sliceLeft.searchTextCount !== sliceRight.searchTextCount) {
return sliceRight.searchTextCount - sliceLeft.searchTextCount;
} else if (sliceLeft.hits.length !== sliceRight.hits.length) {
return sliceRight.hits.length - sliceLeft.hits.length;
} else {
return sliceLeft.start - sliceRight.start;
}
});
// select top N slices in content
var upperBound = parseInt('1');
if (upperBound >= 0) {
slicesOfContent = slicesOfContent.slice(0, upperBound);
}
// highlight title and content
function highlightKeyword(text, slice) {
var result = '';
var prevEnd = slice.start;
slice.hits.forEach(function (hit) {
result += text.substring(prevEnd, hit.position);
var end = hit.position + hit.length;
result += '<b class="search-keyword">' + text.substring(hit.position, end) + '</b>';
prevEnd = end;
});
result += text.substring(prevEnd, slice.end);
return result;
}
var resultItem = '';
// if (slicesOfTitle.length != 0) { resultItem += "<li><a target='_blank' href='" + articleUrl + "' class='search-result-title'>" + highlightKeyword(title, slicesOfTitle[0]) + "</a>"; } else { resultItem += "<li><a target='_blank' href='" +
// articleUrl + "' class='search-result-title'>" + title + "</a>"; } slicesOfContent.forEach(function (slice) { resultItem += "<a target='_blank' href='" + articleUrl + "'><p class=\"search-result\">" + highlightKeyword(content, slice) +
// "...</p></a>"; }); resultItem += "</li>";
if (slicesOfTitle.length != 0) {
resultItem += "<a target='_blank' href='" + articleUrl + "' class='search-result'><div class='search-result-left'><div class='search-result-title'>" + highlightKeyword(title, slicesOfTitle[0]) + "</div><time class='search-result-date'>" + dateTime + "</time>";
} else {
resultItem += "<a target='_blank' href='" + articleUrl + "' class='search-result'><div class='search-result-left'><div class='search-result-title'>" + title + "</div><time class='search-result-date'>" + dateTime + "</time>";
}
slicesOfContent.forEach(function (slice) {
resultItem += "<p class=\"search-result-content\">" + highlightKeyword(content, slice) + "...</p>";
});
resultItem += "</div><div class='search-result-right'><img class='media-image' src='" + imgUrl + "' width='64px' height='48px'></img></div></a>";
resultItems.push({item: resultItem, searchTextCount: searchTextCount, hitCount: hitCount, id: resultItems.length});
}
})
};
if (keywords.length === 1 && keywords[0] === "") {
resultContent.innerHTML = '<div id="no-result"></div>'
} else if (resultItems.length === 0) {
resultContent.innerHTML = '<div id="no-result"></div>'
} else {
resultItems.sort(function (resultLeft, resultRight) {
if (resultLeft.searchTextCount !== resultRight.searchTextCount) {
return resultRight.searchTextCount - resultLeft.searchTextCount;
} else if (resultLeft.hitCount !== resultRight.hitCount) {
return resultRight.hitCount - resultLeft.hitCount;
} else {
return resultRight.id - resultLeft.id;
}
});
var searchResultList = '<div class=\"search-result-list\">';
resultItems.forEach(function (result) {
searchResultList += result.item;
})
searchResultList += "</div>";
resultContent.innerHTML = searchResultList;
}
}
if ('auto' === 'auto') {
input.addEventListener('input', inputEventFunction);
} else {
$('.search-icon').click(inputEventFunction);
input.addEventListener('keypress', function (event) {
if (event.keyCode === 13) {
inputEventFunction();
}
});
}
// remove loading animation
$('body').css('overflow', '');
proceedsearch();
}
// handle and trigger popup window;
$('.popup-trigger').click(function (e) {
e.stopPropagation();
if (isfetched === false) {
searchFunc('local-search-input', 'local-search-result');
} else {
proceedsearch();
};
});
$('.popup-btn-close').click(onPopupClose);
$('.popup').click(function (e) {
e.stopPropagation();
});
$(document).on('keyup', function (event) {
var shouldDismissSearchPopup = event.which === 27 && $('.search-popup').is(':visible');
if (shouldDismissSearchPopup) {
onPopupClose();
}
});
document.addEventListener('mouseup', (e) => {
var _con = document.querySelector(".local-search-content");
if (_con) {
if (!_con.contains(e.target)) {
onPopupClose();
}
}
});
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
inlineMath: [ ["$","$"], ["\\(","\\)"] ],
skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code'],
processEscapes: true
}
});
MathJax.Hub.Queue(function() {
var all = MathJax.Hub.getAllJax();
for (var i = 0; i < all.length; ++i)
all[i].SourceElement().parentNode.className += ' has-jax';
});
</script>
<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
</body>
</html>
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/avidbyte/starlight830.git
git@gitee.com:avidbyte/starlight830.git
avidbyte
starlight830
个人博客
main

搜索帮助