- /assets/js/main.js - /assets/js/main_new.js - /_layouts/default.htmlpull/171/head
@ -0,0 +1,78 @@ | |||||
$(function () { | |||||
$("div#landlord").mouseenter(function () { | |||||
$("div.live_ico_box").fadeIn(); | |||||
}); | |||||
$("div#landlord").mouseleave(function () { | |||||
$("div.live_ico_box").fadeOut(); | |||||
}); | |||||
const urlParams = new URLSearchParams(window.location.search); | |||||
const keyword = urlParams.get('kw')?.trim(); | |||||
if (!keyword) return; | |||||
// 转义正则表达式特殊字符,避免安全问题 | |||||
const escapedKeyword = keyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); | |||||
// 创建不区分大小写的正则表达式(全局匹配) | |||||
const regex = new RegExp(`(${escapedKeyword})`, 'gi'); | |||||
// 递归遍历并高亮文本节点 | |||||
const escapeHTML = str => str.replace(/[&<>"']/g, | |||||
tag => ({ | |||||
'&': '&', | |||||
'<': '<', | |||||
'>': '>', | |||||
'"': '"', | |||||
"'": ''' | |||||
}[tag] || tag)); | |||||
function highlightTextNodes(element) { | |||||
$(element).contents().each(function () { | |||||
if (this.nodeType === Node.TEXT_NODE) { | |||||
const $this = $(this); | |||||
const text = escapeHTML($this.text()); | |||||
// 使用正则替换并保留原始大小写 | |||||
if (regex.test(text)) { | |||||
const replaced = text.replace(regex, '<mark>$1</mark>'); | |||||
$this.replaceWith(replaced); | |||||
} | |||||
} else if ( | |||||
this.nodeType === Node.ELEMENT_NODE && | |||||
!$(this).is('script, style, noscript, textarea') | |||||
) { | |||||
highlightTextNodes(this); | |||||
} | |||||
}); | |||||
} | |||||
$('section').each(function () { | |||||
highlightTextNodes(this); | |||||
}); | |||||
var codeBlocks = document.querySelectorAll('div.highlight'); | |||||
codeBlocks.forEach(function (codeBlock) { | |||||
var copyButton = document.createElement('button'); | |||||
copyButton.className = 'copy'; | |||||
copyButton.type = 'button'; | |||||
copyButton.innerText = '📋'; | |||||
codeBlock.append(copyButton); | |||||
copyButton.addEventListener('click', function () { | |||||
var code = codeBlock.querySelector('pre code').innerText.trim(); | |||||
window.navigator.clipboard.writeText(code) | |||||
.then(() => { | |||||
copyButton.innerText = '✅'; | |||||
}) | |||||
.catch(err => { | |||||
copyButton.innerText = '❌'; | |||||
console.error('Failed to copy:', err); | |||||
}); | |||||
setTimeout(function () { | |||||
copyButton.innerText = '📋'; | |||||
}, 1500); | |||||
}); | |||||
}); | |||||
}); |
Powered by TurnKey Linux.