You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
2.9 KiB
JavaScript

2 years ago
$(function(){
var cardList = [];
$('.isekai-preview-card').each(function(){
//点击动画
var animating = false;
var mouseUp = false;
var cardElem = $(this);
cardElem.on('mousedown', function(){
cardElem.addClass('mousedown');
mouseUp = false;
animating = true;
setTimeout(() => {
if(mouseUp){
cardElem.removeClass('mousedown');
}
animating = false;
}, 150);
}).on('mouseup', function(){
if(animating){
mouseUp = true;
} else {
cardElem.removeClass('mousedown');
}
});
//获取页面列表
var pageTitle = cardElem.attr('data-title');
if(pageTitle){
cardList.push({
title: pageTitle,
element: cardElem,
});
}
});
//加载页面信息
var titleList = [];
var pageInfoList = {};
cardList.forEach((item) => {
var title = item.title;
if(titleList.indexOf(title) === -1){
titleList.push(title);
}
});
var api = new mw.Api();
function setPreviews(pageInfoList){
cardList.forEach((item) => {
var title = item.title;
var elem = item.element;
//移除加载动画
elem.find('.loading').remove();
//查找数据
if(title in pageInfoList){
var info = pageInfoList[title];
if(info.thumbnail){ //有缩略图
elem.addClass('card-media');
elem.find('.card-img').attr('src', info.thumbnail.source).show();
}
console.log(info);
elem.find('.card-content').text(info.extract);
} else {
elem.find('.card-content').text('页面不存在');
}
});
}
api.get({
action: 'query',
prop: ['info', 'extracts', 'pageimages', 'revisions', 'info'],
formatversion: 2,
redirects: true,
exintro: true,
exchars: 150,
explaintext: true,
piprop: 'thumbnail',
pithumbsize: 640,
pilicense: 'any',
rvprop: 'timestamp',
inprop: 'url',
titles: titleList,
smaxage: 300,
maxage: 300,
uselang: 'content',
}).done((data) => {
if(data.query && data.query.pages && data.query.pages.length > 0){
let pages = data.query.pages;
pages.forEach((page) => {
if(!page.missing){
pageInfoList[page.title] = page;
}
});
setPreviews(pageInfoList);
}
});
});