Files
wordpress-kratos-yang/assets/js/kratos.js
T
laoyang 4f0d19fb91 版本号 3.2.4 -> 3.2.5(修 Prism 报错,项目地址改为自建 Git)
## 修 Prism is not defined

首页控制台报 `Uncaught ReferenceError: Prism is not defined`,来源是
wp-editormd 插件(不是本主题):它在 Prism 脚本加载之前就无条件执行了
`Prism.plugins.autoloader.languages_path = "..."`。

线上页面里的真实顺序:
    第 668 行  该赋值语句
    第 695 行  prism-core.min.js
    第 696 行  prism-autoloader.min.js

在 `wp_head` 优先级 0 垫一个最小空壳 `window.Prism`(含 plugins.autoloader
这条访问链路),让那句赋值有地方可写。已核对 prism-core.min.js 源码:它开头
只读 `u.Prism.manual` 与 `u.Prism.disableWorkerMessageHandler`,结尾
`global.Prism = Prism` 整体覆盖 —— 空壳必定被真实对象替换,不承担持久职责,
只为吸收那条过早的赋值。已用 jsdom 验证:去掉空壳重现原始报错,加上后消失,
且之后 `Prism.highlightAll` 仍可正常调用。

## 项目地址统一到 code.yangyq.net

原作者署名、原主题地址、README、语言包、JS 里的控制台横幅全部换成自建仓库地址。
LICENSE 文件保持原样不动(MIT 要求保留原始版权声明)。

## CDN 分支改成拿不到就回退本地

原来的 `g_cdn` 分支指向 `cdn.jsdelivr.net/gh/vtrois/kratos`,本仓库在自建
Gitea 上,jsDelivr 只认 github/npm/wordpress,实测该地址 404。现改为仅在
`YANG_THEME_CDN_REPO` 常量存在时才走 CDN,否则一律用
`get_template_directory_uri()`。留一个 404 的地址比留空更危险:页面能开、
样式全丢,极难排查。

## 顺带

- `.gitattributes` 补 `*.mo binary`:原来是靠"含 NUL"启发式判定,不是契约
- `update.json` 的版本号跟进到 3.2.5
- `kratos.min.js` / `kratos.min.css` 用压缩器重新生成,不手工改产物
2026-10-23 12:55:41 +08:00

188 lines
5.1 KiB
JavaScript

/*!
* Kratos
* Yongquan Yang <yangyq.net>
*/
; (function () {
'use strict'
var KRATOS_VERSION = '3.1.8'
var navbarConfig = function () {
$('#navbutton').on('click', function () {
$('.navbar-toggler').toggleClass('nav-close')
})
}
var tooltipConfig = function () {
$(function () {
$('[data-toggle="tooltip"]').tooltip()
})
}
var gotopConfig = function () {
$(window).on('load', function () {
var $win = $(window)
if ($win.scrollTop() > 200) {
$('.gotop').addClass('active')
} else {
$('.gotop').removeClass('active')
}
$win.scroll(function () {
if ($win.scrollTop() > 200) {
$('.gotop').addClass('active')
} else {
$('.gotop').removeClass('active')
}
})
})
$('.gotop').on('click', function (event) {
event.preventDefault()
$('html, body').animate({
scrollTop: $('html').offset().top
}, 500)
return false
})
}
var searchConfig = function () {
$('.search').on('click', function (e) {
$('.search-form').animate({
width: '200px'
}, 200), $('.search-form input').css('display', 'block')
$(document).one('click', function () {
$('.search-form').animate({
width: '0'
}, 100), $('.search-form input').hide()
})
e.stopPropagation()
})
$('.search-form').on('click', function (e) {
e.stopPropagation()
})
}
var wechatConfig = function () {
$('.wechat').mouseout(function () {
$('.wechat-pic')[0].style.display = 'none'
})
$('.wechat').mouseover(function () {
$('.wechat-pic')[0].style.display = 'block'
})
}
var smiliesConfig = function () {
$('#addsmile').on("click", function (e) {
$('.smile').toggleClass('open')
$(document).one("click", function () {
$('.smile').toggleClass('open')
})
e.stopPropagation()
return false
})
}
var postlikeConfig = function () {
$.fn.postLike = function () {
if ($(this).hasClass('done')) {
layer.msg(kratos.repeat, function () { })
return false
} else {
$(this).addClass('done')
layer.msg(kratos.thanks)
var id = $(this).data("id"),
action = $(this).data('action')
var ajax_data = {
action: "love",
um_id: id,
um_action: action
}
$.post(kratos.site + '/wp-admin/admin-ajax.php', ajax_data, function (data) { })
return false
}
}
$(document).on("click", ".btn-thumbs", function () {
$(this).postLike()
})
}
var donateConfig = function () {
$("#donate").on('click', function () {
layer.open({
type: 1,
area: ['300px', '370px'],
title: kratos.donate,
resize: false,
scrollbar: false,
content: '<div class="donate-box"><div class="meta-pay text-center my-2"><strong>' + kratos.scan + '</strong></div><div class="qr-pay text-center"><img class="pay-img" id="alipay_qr" src="' + kratos.alipay + '"><img class="pay-img d-none" id="wechat_qr" src="' + kratos.wechat + '"></div><div class="choose-pay text-center mt-2"><input id="alipay" type="radio" name="pay-method" checked><label for="alipay" class="pay-button"><img src="' + kratos.directory + '/assets/img/payment/alipay.png"></label><input id="wechatpay" type="radio" name="pay-method"><label for="wechatpay" class="pay-button"><img src="' + kratos.directory + '/assets/img/payment/wechat.png"></label></div></div>'
})
$(".choose-pay input[type='radio']").click(function () {
var id = $(this).attr("id")
if (id == 'alipay') { $(".qr-pay #alipay_qr").removeClass('d-none'); $(".qr-pay #wechat_qr").addClass('d-none') };
if (id == 'wechatpay') { $(".qr-pay #alipay_qr").addClass('d-none'); $(".qr-pay #wechat_qr").removeClass('d-none') };
})
})
}
var accordionConfig = function () {
$(document).on('click', '.acheader', function (event) {
var $this = $(this)
$this.closest('.accordion').find('.contents').slideToggle(300)
if ($this.closest('.accordion').hasClass('active')) {
$this.closest('.accordion').removeClass('active')
} else {
$this.closest('.accordion').addClass('active')
}
event.preventDefault()
})
}
var consoleConfig = function () {
console.log('\n Kratos v' + KRATOS_VERSION + '\n\n https://code.yangyq.net/laoyang/wordpress-kratos-yang \n\n')
}
$(function () {
accordionConfig()
navbarConfig()
tooltipConfig()
gotopConfig()
searchConfig()
wechatConfig()
smiliesConfig()
postlikeConfig()
donateConfig()
consoleConfig()
})
}())
function grin (tag) {
var myField
tag = ' ' + tag + ' '
if (document.getElementById('comment') && document.getElementById('comment').type == 'textarea') {
myField = document.getElementById('comment')
} else {
return false
}
if (document.selection) {
myField.focus()
sel = document.selection.createRange()
sel.text = tag
myField.focus()
}
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart
var endPos = myField.selectionEnd
var cursorPos = endPos
myField.value = myField.value.substring(0, startPos)
+ tag
+ myField.value.substring(endPos, myField.value.length)
cursorPos += tag.length
myField.focus()
myField.selectionStart = cursorPos
myField.selectionEnd = cursorPos
}
else {
myField.value += tag
myField.focus()
}
}