bosslbk

boss调用操作列表

This script should not be not be installed directly. It is a library for other scripts to include with the meta directive // @require https://update.greasyfork.org/scripts/522849/1515236/bosslbk.js

// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  try to take over the world!
// @author       People starving to death
// @match        *://*/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=zhipin.com
// @grant        none
// ==/UserScript==
(function() {
'use strict';
let isLibraryInitialized = false;
// 判断当前页面是否为列表页 /geek/job
const isListPage = window.location.href.includes("/geek/job");
// 处理列表页的逻辑
function processListPage() {
if (isLibraryInitialized) return;
console.log("正在处理列表页...");
isLibraryInitialized = true;
// 获取列表中的所有职位项
const jobListItems = document.querySelectorAll('ul.job-list-box > li'); // 替换为你实际的列表项选择器
// 监听翻页操作
const nextPageButton = document.querySelector('.pagination-next');
if (nextPageButton) {
nextPageButton.addEventListener('click', function() {
console.log("翻页了,重新加载列表页面");
// 重新调用列表页的处理函数
setTimeout(() => hideJobItems(), 500); // 延时处理,等待新页面加载
});
}
// 监听 postMessage 事件,接收来自详情页的消息
window.addEventListener("message", function(event) {
if (isListPage && event.data && event.data.type === "hideJobItem" && event.data.data) {
const { nameText, salary, bossInfo } = event.data.data;
console.log(`接收到隐藏职位的事件: ${nameText}`);
hideJobItems(nameText, salary, bossInfo);  // 调用处理隐藏的函数
}
});
// 每次页面加载或翻页后,处理所有符合条件的职位项
hideJobItems(); // 自动执行隐藏任务
}
// 直接暴露的全局方法,可以供详情页调用
window.hideJobItem = function(nameText, salary, bossInfo) {
console.log(`通过库函数在列表页隐藏职位项: ${nameText}, ${salary}, ${bossInfo}`);
hideJobItems(nameText, salary, bossInfo); // 调用处理隐藏的函数
};
// 根据传递的职位信息来隐藏职位项
function hideJobItems(nameText = null, salary = null, bossInfo = null) {
const jobListItems = document.querySelectorAll('ul.job-list-box > li'); // 替换为你实际的列表项选择器
console.log('document',document)
console.log('jobListItems',jobListItems)
jobListItems.forEach(function(item) {
const itemText = item.textContent;
console.log('nameText',nameText)
console.log('itemText',itemText)
const matchesName = nameText === '' || itemText.includes(nameText);
const matchesSalary = salary === '' || itemText.includes(salary);
const matchesBossInfo = bossInfo === '' || itemText.includes(bossInfo);
// 检查职位项中是否包含相应的名称、薪资和老板信息
if (matchesName && matchesSalary && matchesBossInfo) {
item.style.display = 'none';
console.log(`在列表页隐藏职位项: ${nameText}`);
}
});
}
// 使用 MutationObserver 监听 DOM 变化
function observePageChanges() {
const observer = new MutationObserver(() => {
// 每次 DOM 发生变化时,检查职位项是否需要隐藏
hideJobItems();
});
// 配置 MutationObserver
observer.observe(document.body, {
childList: true, // 监听子节点的变化
subtree: true,   // 监听所有子孙节点的变化
});
}
// 在页面加载完成后执行,确保元素都存在
window.addEventListener('load', function() {
if (isListPage) {
console.log("页面为列表页");
processListPage();
observePageChanges(); // 开始监听页面变化
}
});
})();