// ==UserScript==
// @name 蜜柑动画新番快速定位
// @namespace pks
// @version 0.121
// @icon https://mikanani.me/favicon.ico
// @description 使用快捷键 F 或 S 打开快速定位搜索框,ESC关闭。
// @author pks
// @include /^https?://mikanani\.me/?$/
// @include /^https?://mikanani\.me/Home/MyBangumi/?$/
// @grant none
// ==/UserScript==
$(function () {
(function(){
var css = '.highlight{animation:bg 3s infinite} .highlight .an-text{color: red !important}@keyframes bg{0%{background-color:rgba(255,255,0,0.18);} 25%{background-color:rgba(255,255,0,0.5);} 50%{background-color:rgba(255,255,0,0.1);} 75%{background-color:rgba(255,255,0,0.3);} 100%{background-color:rgba(255,255,0,0.18);}} ',
head = document.head || document.getElementsByTagName('head')[0],
style = document.createElement('style');
style.type = 'text/css';
if (style.styleSheet){
style.styleSheet.cssText = css;
} else {
style.appendChild(document.createTextNode(css));
}
head.appendChild(style);
})();
function scrollToElement(ele) {
var eleTop = $(ele).offset().top;
if (!!document.querySelector('#sk-data-nav')) {
$(window).animate({scrollTop: !!document.querySelector('#sk-data-nav.stick')?eleTop - 80:eleTop - 141});
} else {
$(window).animate({scrollTop: eleTop - 10});
}
$('.highlight').removeClass('highlight');
$(ele).addClass('highlight');
setTimeout(function(){
$(ele).removeClass('highlight');
}, 6000);
}
function submitFilter() {
var dropDownList = [];
bangumis.forEach(function(item,index,arr){
if (item.name.toLowerCase().trim().indexOf($('#filter').val().toLowerCase().trim()) !== -1 && dropDownList.length <= 5) {
dropDownList.push(index);
}
});
if (dropDownList.length > 0) {
scrollToElement(bangumis[dropDownList[0]].element);
}
$('#filter').val('');
$('#filter').css('display', 'none').blur();
}
$('.main-content').on('click','span.js-expand_bangumi',function(e){
console.log(e.target, this);
if ($(this).parent().is('.active')) {
setTimeout(function(){
scrollToElement(e.target);
},1500);
}
});
var bangumis = [];
function getBangumis() {
bangumis = [];
$('.an-info').each(function(index,element){
var obj = {};
obj.name = $(element).find('a.an-text').attr('title') || $(element).find('.date-text').eq(1).text();
obj.element = $(element).closest('li')[0];
bangumis.push(obj);
});
console.log(bangumis);
}
getBangumis();
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
var target = document.querySelector('#sk-body');
var observer = new MutationObserver(getBangumis);
var config = {childList: true};
observer.observe(target, config);
$('<input id="filter" placeholder="新番快速查找 ( Enter键提交 )">')
.css({
'width': '350px',
'height': '64px',
'position': 'fixed',
'top': 0,
'right': 0,
'bottom': 0,
'left': 0,
'margin': 'auto',
'fontSize': '24px',
'opacity': '0.9',
'textAlign': 'center',
'display':'none'
}).appendTo('body');
$('#filter').on('keydown', function (e) {
if (e.keyCode === 27 && !!$(this).val()) {
$(this).wrap('<form></form>');
$(this).parent()[0].reset();
$(this).unwrap();
$(this).focus();
} else if (/^(13|8|27)$/.test(e.keyCode) && $(this).val()==='') {
$(this).css('display', 'none').blur();
} else if (e.keyCode === 13 && !!$(this).val() ) {
submitFilter();
}
});
var callFilter = function (e) {
if (e.target.nodeName !== 'INPUT' && e.target.nodeName !== 'TEXTAREA' && /^(70|83)$/.test(e.keyCode) && $(window).width() >=992) {
$('#filter').css('display', 'block').focus();
}
};
$(document).on('keyup.wideScreenOnly', callFilter);
$(window).on('resize', function (e) {
if ($(window).width() <= 991) {
$('#filter').css('display', 'none').blur();
$(document).off('.wideScreenOnly');
} else {
$(document).on('keyup.wideScreenOnly', callFilter);
}
});
$(document).on('click', function (e) {
if (e.target.id !== 'filter' && $('#filter').css('display') === 'block') {
$('#filter').css('display', 'none').blur();
}
});
});