您需要先安装一款用户样式管理器扩展(如 Stylus)后才能安装此样式。
您需要先安装一款用户样式管理器扩展(如 Stylus)后才能安装此样式。
您需要先安装一款用户样式管理器扩展(如 Stylus)后才能安装此样式。
您需要先安装一款用户样式管理器扩展后才能安装此样式。
您需要先安装一款用户样式管理器扩展后才能安装此样式。
您需要先安装一款用户样式管理器扩展后才能安装此样式。
(我已经安装了用户样式管理器,让我安装!)
// ==UserScript==
// @name baxitv_find_preview
// @namespace com.oldtan.find_preview
// @version 1.1.9
// @description 查找预览
// @author oldtan
// @include https://www.baxi.tv/forum-54-*.html
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant none
// ==/UserScript==
function sleep(time){
var timeStamp = new Date().getTime();
var endTime = timeStamp + time;
while(true){
if (new Date().getTime() > endTime){
return;
}
}
}
window.addEventListener('load', function() {
//console.log(123111111111111111111111111111)
// // 获取所有的超链接元素
// var links = document.querySelectorAll('a');
// // 遍历这些超链接并检查文本内容
// links.forEach(function(link) {
// // 检查超链接文本是否等于 '预览'
// if (link.textContent === '预览') {
// // 获取超链接所在的 tbody 元素的 ID
// var tbodyElement = link.closest('tbody');
// if (tbodyElement.id.includes('stick')){
// return
// }
// if (tbodyElement) {
// // 提取 tid,这里假设 tbody 的 ID 是 'thread_' + tid
// var tid = tbodyElement.id.replace('normalthread_', '');
// // 调用 forum.js 中的 previewThread 函数
// previewThread(tid, tbodyElement.id);
// // 确保预览元素可见
// var previewDiv = document.getElementById('threadPreviewTR_' + tid);
// if (previewDiv) {
// previewDiv.style.display = 'revert';
// }
// }
// }
// });
var scbar = document.getElementById('scbar');
var scbar_hot = document.getElementById('scbar_hot');
// 获取 div 内的所有 <a> 元素
var links = scbar_hot.getElementsByTagName('*');
// 倒序遍历并删除所有 <a> 元素
for (var i = links.length - 1; i >= 0; i--) {
links[i].parentNode.removeChild(links[i]);
}
document.getElementsByClassName('scbar_hot_td')[0].style.width='60%';
scbar_hot.addEventListener('click', function(e) {
// 获取所有的超链接元素
var links = document.querySelectorAll('a');
// 遍历这些超链接并检查文本内容
links.forEach(function(link) {
// 检查超链接文本是否等于 '预览'
if (link.textContent === '预览') {
// 获取超链接所在的 tbody 元素的 ID
var tbody = link.closest('tbody').getAttribute('id');
if (tbody.includes('stick')){
return
}
if (tbody) {
// 提取 tid,这里假设 tbody 的 ID 是 'thread_' + tid
var tid = tbody.split('_')[1];
// 调用 forum.js 中的 previewThread 函数
previewThread(tid, tbody);
// 确保预览元素可见
var previewDiv = document.getElementById('threadPreviewTR_' + tid);
if (previewDiv) {
previewDiv.style.display = 'revert';
}
}
}
});
});
// 初始化时设置 scbar 的样式
// setScrollStyle(scbar);
// 隐藏热搜关键字
var hotkwdDiv = document.getElementById('scbar_hot');
if (hotkwdDiv) {
// hotkwdDiv.style.display = 'none';
}
var navbar = document.getElementById('scbar');
var navbarOffsetTop = navbar.offsetTop; // 导航栏距离页面顶部的距离
var isScrollStyle=false
window.addEventListener('scroll', function() {
var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
if (scrollTop > navbarOffsetTop) {
setScrollStyle(scbar);
isScrollStyle=true
} else {
setInitialStyle(scbar);
isScrollStyle=false
}
});
// 添加键盘事件监听器
document.addEventListener('keydown', function(event) {
// 检查是否同时按下了 Ctrl 和 'F' 或 'S' 键
// if (event.ctrlKey && (event.key === 'D' || event.key === 'S')) {
if (event.key === 'Tab') {
// 阻止默认的 Tab 行为
event.preventDefault();
// 获取输入框元素
var input = document.getElementById('scbar_txt');
// 让输入框获取焦点
input.focus();
// 选中输入框中的所有文本
input.select();
}
});
// 获取搜索提交按钮和搜索输入框
var searchButton = document.getElementById('scbar_btn');
var searchInput = document.getElementById('scbar_txt');
var searchForm = document.getElementById('scbar_form');
// searchButton.addEventListener('click', function() {
searchForm.addEventListener('submit', function(event) {
event.preventDefault(); // 阻止表单默认的提交
var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
//先隐藏所有预览
hidePreview();
//移除之前的高亮显示
removeHighlight();
// 获取搜索框的值
var searchValue = searchInput.value.toLowerCase();
var displayElement = document.getElementById('scbar_type');
if (searchValue) {
// 获取所有超链接
var links = document.getElementsByClassName('s xst');
var matchCount = 0; // 重置匹配计数器
var firstMatch = null; // 存储第一个匹配的超链接
// 遍历超链接
for (var i = 0; i < links.length; i++) {
var link = links[i];
// 检查超链接文本是否包含搜索值
if (link.textContent.toLowerCase().includes(searchValue)) {
// 打印匹配的超链接文本内容
// console.log(link.textContent);
matchCount++;
// 高亮显示匹配的超链接文本
highlightText(link, searchValue);
// 获取超链接所在的 tbody 元素的 ID
var tbody = link.closest('tbody').getAttribute('id');
if (tbody.includes('stick')){
return
}
if (tbody) {
// 提取 tid,这里假设 tbody 的 ID 是 'thread_' + tid
var tid = tbody.split('_')[1];
// 调用 forum.js 中的 previewThread 函数
previewThread(tid, tbody);
// 确保预览元素可见
var previewDiv = document.getElementById('threadPreviewTR_' + tid);
if (previewDiv) {
previewDiv.style.display = 'revert';
}
if (!firstMatch) {
firstMatch = link; // 存储第一个匹配的超链接
if(!isScrollStyle){
setScrollStyle(scbar);//不设置的话搜索到的关键字正好是第一个,显示有异样
}
// 找到当前链接的父节点
var previousElement = firstMatch.closest('tbody').previousElementSibling;
if(previousElement.nodeName==='SCRIPT'){
previousElement=previousElement.previousElementSibling.previousElementSibling;
}
console.log(previousElement)
previousElement.scrollIntoView({ behavior: 'smooth', block: 'start' });
}
}
}
}
if(firstMatch){
// if(isScrollStyle){
// console.log(previousElement+scrollTop)
// previousElement.scrollIntoView({ behavior: 'smooth', block: 'start' });
// }else{
// previousElement = previousElement.previousElementSibling.previousElementSibling;
// console.log(previousElement)
// previousElement.scrollIntoView({ behavior: 'smooth', block: 'start' });
// var stickElement = document.getElementById('threadlist');//threadlist
// stickElement.scrollIntoView({ behavior: 'smooth', block: 'start' });
// }
}
displayElement.textContent = matchCount;
} else {
console.log('Please enter a search term.');
displayElement.textContent = 0;
}
// 使用 setTimeout 延迟获取所有类名为 'previewvfastpost' 的元素
setTimeout(function() {
var elements = document.getElementsByClassName('previewvfastpost');
// console.log(elements.length);
// 遍历所有元素并隐藏它们
for (var j = 0; j < elements.length; j++) {
elements[j].style.display = 'none';
}
}, 500); // 毫秒
});
});
function hidePreview(){
// 获取所有的超链接元素
var links = document.querySelectorAll('a');
// 遍历这些超链接并检查文本内容
links.forEach(function(link) {
// 检查超链接文本是否等于 '预览'
if (link.textContent === '隐藏预览') {
// 获取超链接所在的 tbody 元素的 ID
var tbody = link.closest('tbody').getAttribute('id');
if (tbody.includes('stick')){
return
}
if (tbody) {
// 提取 tid,这里假设 tbody 的 ID 是 'thread_' + tid
var tid = tbody.split('_')[1];
// 调用 forum.js 中的 previewThread 函数
previewThread(tid, tbody);
// 确保预览元素可见
var previewDiv = document.getElementById('threadPreviewTR_' + tid);
if (previewDiv) {
previewDiv.style.display = 'revert';
}
}
}
});
}
// 函数:高亮显示匹配的文本
function highlightText(element, searchValue) {
var innerHTML = element.innerHTML; // 获取元素的原始HTML
var highlighted = innerHTML.replace(new RegExp(searchValue, 'gi'), function(match) {
return '<span class="ai-assist-highlight">' + match + '</span>'; // 将匹配的文本包裹在span中,并添加高亮样式类
});
element.innerHTML = highlighted; // 更新元素的HTML以显示高亮文本
}
// 移除高亮显示的函数
function removeHighlight() {
var highlights = document.querySelectorAll('.ai-assist-highlight');
highlights.forEach(function(el) {
// 将高亮文本的父级超链接的文本内容恢复原样
var parentLink = el.parentNode;
parentLink.innerHTML = parentLink.textContent;
});
}
// 定义初始化样式
function setInitialStyle(scbar) {
scbar.style.overflow = 'hidden';
scbar.style.height = '42px';
scbar.style.lineHeight = '42px';
scbar.style.borderTop = '1px solid #FFF';
scbar.style.borderBottom = '1px solid #E9EFF5';
scbar.style.background = '#E8EFF5';
scbar.style.position = 'static'; // 非固定定位
// scbar.style.left = '234.667px';
scbar.style.zIndex = '199';
scbar.style.top = '0px';
}
// 定义滚动时的样式
function setScrollStyle(scbar) {
scbar.style.borderLeftWidth = '0px';
scbar.style.borderRightWidth = '0px';
scbar.style.height = '42px';
scbar.style.lineHeight = '42px';
scbar.style.width = '960px';
scbar.style.position = 'fixed';
scbar.style.opacity = '1';
// scbar.style.left = '234.667px';
scbar.style.zIndex = '199';
scbar.style.top = '0px';
}
function Toast(msg,duration){
duration=isNaN(duration)?3000:duration;
var m = document.createElement('div');
m.innerHTML = msg;
m.style.cssText="max-width:60%;min-width: 150px;padding:0 14px;height: 60px;color: rgb(255, 255, 255);line-height: 60px;text-align: center;border-radius: 4px;position: fixed;top: 40%;left: 50%;transform: translate(-50%, -50%);z-index: 999999;background: rgba(0, 0, 0,.7);font-size: 16px;";
document.body.appendChild(m);
setTimeout(function() {
var d = 0.5;
m.style.webkitTransition = '-webkit-transform ' + d + 's ease-in, opacity ' + d + 's ease-in';
m.style.opacity = '0';
setTimeout(function() { document.body.removeChild(m) }, d * 1000);
}, duration);
}
function Toast2(msg,duration){
duration=isNaN(duration)?3000:duration;
var m = document.createElement('div');
m.innerHTML = msg;
m.style.cssText="max-width:60%;min-width: 150px;padding:0 14px;height: 60px;color: rgb(255, 255, 255);line-height: 60px;text-align: center;border-radius: 4px;position: fixed;top: 50%;left: 50%;transform: translate(-50%, -50%);z-index: 999999;background: rgba(0, 0, 0,.7);font-size: 16px;";
document.body.appendChild(m);
setTimeout(function() {
var d = 0.5;
m.style.webkitTransition = '-webkit-transform ' + d + 's ease-in, opacity ' + d + 's ease-in';
m.style.opacity = '0';
setTimeout(function() { document.body.removeChild(m) }, d * 1000);
}, duration);
}