По умолчанию шаблон указывает ссылку изображения на странице изображения на исходный адрес, но я хочу указать изображение на страницу сведений; Я написал код с помощью ИИ, но он не работает, когда он загружает страницу в первый раз, но после перестановки все в порядке, есть ли способ сделать так, чтобы он указывал на страницу с подробностями в первый раз, когда он заходит на страницу? Код следующий:
В настоящее время не работает тестовая веб-страница: https://test.keran.com.tw/index.php/work/
Код: Выделить всё
function keran_custom_script() {
if (is_admin() || !is_page(2717)) {
return; // 如果是后台或者不是页面 ID 为 2717,则不执行下面的脚本
}
?>
const updateImageLinks = () => {
const workItems = document.querySelectorAll('.qrt-work-item');
workItems.forEach(item => {
const link = item.querySelector('.qrt-work-descr a');
const imageLink = item.querySelector('.qrt-work-cover-frame');
if (link && imageLink) {
imageLink.setAttribute('href', link.getAttribute('href') || '#');
}
});
};
// 页面完全加载后执行
window.addEventListener('load', updateImageLinks);
// AJAX完成后的处理
if (window.jQuery) {
jQuery(document).ajaxComplete(updateImageLinks);
}
// 使用MutationObserver监听DOM变化
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
if (mutation.addedNodes.length > 0) {
updateImageLinks();
}
});
});
observer.observe(document.body, { childList: true, subtree: true });
// 监听滚动事件,但要防止过度执行
let scrollTimeout;
window.addEventListener('scroll', () => {
clearTimeout(scrollTimeout);
scrollTimeout = setTimeout(updateImageLinks, 300);
});
// 页面变得可见时执行
document.addEventListener('visibilitychange', () => {
if (document.visibilityState === 'visible') {
updateImageLinks();
}
});
// 确保所有图片加载完成之后才更新链接
const executeWhenImagesLoaded = (callback) => {
const images = document.images;
let loadedImagesCount = 0;
Array.from(images).forEach((img) => {
if(img.complete) {
loadedImagesCount++;
} else {
img.addEventListener('load', () => {
loadedImagesCount++;
if (loadedImagesCount === images.length) {
callback();
}
});
img.addEventListener('error', () => {
loadedImagesCount++;
if (loadedImagesCount === images.length) {
callback();
}
});
}
});
// If all images are loaded from cache
if(loadedImagesCount === images.length) {
callback();
}
};
// Call executeWhenImagesLoaded during window load
window.addEventListener('load', () => {
executeWhenImagesLoaded(updateImageLinks);
});
Подробнее здесь: [url]https://stackoverflow.com/questions/78413424/is-there-any-way-to-change-the-template-so-that-the-image-doesnt-lead-to-the-so[/url]
Мобильная версия