您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
隐藏拉勾网职位搜索列表的指定职位或公司
// ==UserScript== // @name 拉勾网职位隐藏脚本 // @namespace https://greasyfork.org/zh-CN/scripts/388495-%E6%8B%89%E5%8B%BE%E7%BD%91%E8%81%8C%E4%BD%8D%E9%9A%90%E8%97%8F%E8%84%9A%E6%9C%AC // @version 0.2 // @description 隐藏拉勾网职位搜索列表的指定职位或公司 // @author lyswhut // @match https://www.lagou.com/jobs/list_* // @run-at document-start // @grant none // ==/UserScript== (function() { 'use strict'; window.__tools__ = { hideCompany: [], hidePosition: [], jq: null, lgAjax: null, list: [], // 代理拉勾ajax proxyLgajax(options) { if (options.url.includes('positionAjax')) { options.success = window.__tools__.proxySuccess(options.success) } return window.__tools__.lgAjax(options) }, // 代理响应成功函数 proxySuccess(fn) { return function (data, textStatus, jqXHR) { window.__tools__.filterData(data) fn(data, textStatus, jqXHR) } }, // 过滤职位 filterData(data) { if (!data.content.positionResult.result.length) return let result = data.content.positionResult.result const filterList = [] result = result .filter(p => this.hideCompany.find(i => i.companyId === p.companyId) ? !filterList.push(p) : true) .filter(p => this.hidePosition.find(i => i.positionId === p.positionId) ? !filterList.push(p) : true) data.content.positionResult.result = this.list = result console.log('本次已过滤的职位为:') console.log(filterList .map(i => `${i.companyFullName} - ${i.positionName} - ${i.salary} - ${i.companySize}`) .join('\n') || '空') }, // 隐藏公司 addHideCompany(dom_btn, index) { const item = this.list[index] if (!item) return if (this.hideCompany.find(i => i.companyId === item.companyId)) return this.hideCompany.push(item) this.saveData() this.removeDomLi(dom_btn) }, // 隐藏职位 addHidePosition(dom_btn, index) { const item = this.list[index] if (!item) return if (this.hideCompany.find(i => i.positionId === item.positionId)) return this.hidePosition.push(item) this.saveData() this.removeDomLi(dom_btn) }, // 从dom列表中移除隐藏的职位 removeDomLi(dom_btn) { let dom_li = dom_btn.parentNode.parentNode if (dom_li.tagName != 'LI') return dom_li.parentNode.removeChild(dom_li) }, // 模板注入 injectTemplate() { let t = document.getElementById('tpl-position-list') if (!t) throw new Error('找不到模板') const btn = `<div style="position: absolute; right: 0; top: 0;"> <button style="padding: 3px 5px; background: rgba(230,230,230, .8);" onclick="__tools__.addHidePosition(this, {{i}})">隐藏该职位</button> <button style="padding: 3px 5px; background: rgba(230,230,230, .8);" onclick="__tools__.addHideCompany(this, {{i}})">隐藏该公司</button> </div>` t.innerHTML = t.innerHTML.replace('</li>', btn + '</li>') }, // 保存数据 saveData() { localStorage.setItem( '__lgTools__', JSON.stringify({ hideCompany: this.hideCompany, hidePosition: this.hidePosition, }) ) }, // hook jQuery hookJQuery() { Object.defineProperty(window, 'jQuery', { set: v => { this.jq = v this.hookLgajax() }, get: () => { return this.jq }, }) }, // hook拉勾ajax hookLgajax() { Object.defineProperty(this.jq, 'lgAjax', { set: v => { this.lgAjax = v }, get: () => { return this.proxyLgajax }, }) }, // 初始化 init() { this.hookJQuery() document.addEventListener('DOMContentLoaded', () => { this.injectTemplate() }) let list = localStorage.getItem('__lgTools__') if (!list) return list = JSON.parse(list) this.hideCompany = list.hideCompany this.hidePosition = list.hidePosition }, } window.__tools__.init() })();