新增奇遇界面;修复异常

This commit is contained in:
2026-07-26 21:52:40 +08:00
parent 03e5e2f529
commit d575d584cb
9 changed files with 380 additions and 168 deletions
+13 -25
View File
@@ -464,6 +464,10 @@ function showListLoading(selector, loadingHtml) {
$(selector).html(loadingHtml || DEFAULT_LIST_LOADING_HTML);
}
function hidePagination(selector) {
$(selector).hide();
}
function setCategoryLinkActive($link, childSelector) {
$link.addClass('active').parent().siblings().children(childSelector || 'a').removeClass('active');
if (window.pix && typeof pix.centerCategoryNavActive === 'function') {
@@ -1203,12 +1207,8 @@ $(document).on('click', '.moment_cat_nav ul li a', function () {
url: cat,
headers: HTML_PAGE_AJAX_HEADERS,
beforeSend: function () {
const $pagingArea = $('#t_pagination .post-paging');
if ($pagingArea.length) {
$pagingArea.html('<div uk-spinner></div>');
} else {
showListLoading('.moment_list');
}
showListLoading('.moment_list');
hidePagination('#t_pagination');
},
success: function (data) {
setCategoryLinkActive($this);
@@ -1271,12 +1271,8 @@ $(document).on('click', '.friends_cat_nav .cat-link', function () {
url: url,
headers: HTML_PAGE_AJAX_HEADERS,
beforeSend: function () {
const $pagingArea = $('#t_pagination .post-paging');
if ($pagingArea.length) {
$pagingArea.html('<div uk-spinner></div>');
} else {
showListLoading('.moment_list');
}
showListLoading('.moment_list');
hidePagination('#t_pagination');
},
success: function (data) {
setCategoryLinkActive($this);
@@ -1556,12 +1552,8 @@ $(document).ready(function () {
url: url,
headers: HTML_PAGE_AJAX_HEADERS,
beforeSend: function () {
const $pagingArea = $('#p_pagination .post-paging');
if ($pagingArea.length) {
$pagingArea.html('<div uk-spinner></div>');
} else {
showListLoading("#photos_item", PHOTO_LIST_LOADING_HTML);
}
showListLoading("#photos_item", PHOTO_LIST_LOADING_HTML);
hidePagination('#p_pagination');
},
success: function (data) {
setCategoryLinkActive($this);
@@ -1815,12 +1807,8 @@ $(document).on('click', '.posts_cat_nav ul li a', function (e) {
url: cat, // 完全保留原有请求URL,不修改
headers: HTML_PAGE_AJAX_HEADERS,
beforeSend: function () {
const $pagingArea = $('#pagination .post-paging');
if ($pagingArea.length) {
$pagingArea.html('<div uk-spinner></div>');
} else {
showListLoading('.norpost_list');
}
showListLoading('.norpost_list');
hidePagination('#pagination');
},
success: function (data) {
setCategoryLinkActive($this);
@@ -1831,7 +1819,7 @@ $(document).on('click', '.posts_cat_nav ul li a', function (e) {
updateLoadMorePagination('#pagination', '.norpost_list', data, '.arc_pagenav');
$('.loading_box').remove();
$('.norpost_list .loading_box').remove();
initAgree();
lazyLoadInstance.update();
$('.posts_cat_nav ul li a').removeClass('disabled');
+89 -15
View File
@@ -41,38 +41,108 @@ var playlist = [];
var post_playlist = [];
var Paused = true;
var playLrc = '';
var standaloneTrack = false;
var m_cover = $('.player_mod .m_cover img');
var m_title = $('.player_mod .m_info h2');
var m_artist = $('.player_mod .m_info small');
// 将歌曲数据交给主题播放器。source 用于同步文章或片刻中的播放按钮状态。
function playPlayerTrack(data, options) {
options = options || {};
var source = options.source ? $(options.source) : $();
var player = source.closest('.pix_player');
var audio = audiobox[0];
var currentSource = audio.getAttribute('src') || '';
if (!data || !data.url) {
return false;
}
$(document).on('click', '.play_btn', function () {
$('.player_box').append(audiobox);
$('.pix_player').removeClass('playing');
$(this).parents('.pix_player').addClass('playing');
var url = $(this).attr('data');
var lrc = $(this).attr('lrc');
var audio_s = $('#pix_player').attr('src');
if (player.length) {
player.addClass('playing');
}
var meta = $(this).siblings('.player_meta').find('.title');
playLrc = lrc;
m_title.text(meta.find('.name').text());
m_artist.text(meta.find('.author').text());
m_cover.attr('src', $('.pix_player.playing .player_thum img').attr('src'));
playLrc = data.lrc || '';
m_title.text(data.title || data.name || '未知歌曲');
m_artist.text(data.author || data.artist || '未知歌手');
if (data.pic) {
m_cover.attr('src', data.pic);
}
if (audio_s == '' || audio_s !== url) {
$('#pix_player').attr('src', url);
audiobox[0].play();
} else {
standaloneTrack = options.standalone === true;
initAudio();
if (options.toggle && currentSource === data.url) {
pasued();
} else {
audio.setAttribute('src', data.url);
var playPromise = audio.play();
if (playPromise && typeof playPromise.catch === 'function') {
playPromise.catch(function () {
// 浏览器阻止自动播放时,保留播放器状态并等待用户点击播放。
});
}
}
$(".play_btn").html("<i class='ri-play-line'></i>");
return true;
}
initAudio();
$(document).on('click', '.play_btn', function () {
var meta = $(this).siblings('.player_meta').find('.title');
playPlayerTrack({
url: $(this).attr('data'),
lrc: $(this).attr('lrc'),
title: meta.find('.name').text(),
author: meta.find('.author').text(),
pic: $(this).closest('.pix_player').find('.player_thum img').attr('src')
}, {
source: this,
toggle: true,
standalone: false
});
});
function musicApiUrl(server, type, id) {
var api = Theme.play.pix_mu_api || 'https://api.i-meto.com/meting/api';
var separator = api.indexOf('?') === -1 ? '?' : '&';
return api + separator + 'server=' + encodeURIComponent(server) +
'&type=' + encodeURIComponent(type) + '&id=' + encodeURIComponent(id) +
'&r=' + Math.random();
}
// 通过网易云歌曲 ID 获取歌曲数据,并使用主题播放器播放。
function play_netease_music(songId) {
var id = String(songId == null ? '' : songId).trim();
if (!id) {
if (typeof cocoMessage !== 'undefined') cocoMessage.error('网易云歌曲ID不能为空');
return false;
}
$.ajax({
type: 'get',
url: musicApiUrl('netease', 'song', id)
}).done(function (res) {
var data = Array.isArray(res) ? res[0] : res;
if (res && !Array.isArray(res) && Array.isArray(res.data)) {
data = res.data[0];
}
if (!data || !data.url) {
if (typeof cocoMessage !== 'undefined') cocoMessage.error('网易云歌曲无法播放');
return;
}
playPlayerTrack(data, { standalone: true });
}).fail(function () {
if (typeof cocoMessage !== 'undefined') cocoMessage.error('网易云歌曲加载失败');
});
}
function playNeteaseMusic(songId) {
play_netease_music(songId);
}
// 初始化函数
function initAudio() {
audiobox[0].addEventListener("play", audioplay);
@@ -85,6 +155,7 @@ function initAudio() {
//音乐结束触发
function endplay() {
if (standaloneTrack || !playlist[0] || playlist[0].length === 0) return;
var index = $('.musci_list_box li.active').index() + 1;
var max = $('.musci_list_box li').length;
var new_mid = 0;
@@ -223,6 +294,7 @@ function autoload_music() {
type: "get",
url: url,
success: function (res) {
if (standaloneTrack) return;
if (res.length > 0) {
var new_mid = 0;
if (loop == "none") {
@@ -255,6 +327,7 @@ function autoload_music() {
//播放选中音乐
function mulist_play(index) {
standaloneTrack = false;
audiobox[0].removeEventListener("play", audioplay);
audiobox[0].removeEventListener("pause", audiopause);
$(".pix_player.playing .play_btn").html("<i class='ri-play-line'></i>");
@@ -493,6 +566,7 @@ function autoload_posts_music() {
$(document).on('click', '.s_play_btn', function () {
mu_box_show();
// 1. 同步更新文章内播放列表选中状态
standaloneTrack = false;
$('.posts_mu_list li').removeClass('active');
$(this).parent().addClass('active');
// 2. 同步更新全局播放列表选中状态(避免后续操作信息混乱)