// ==UserScript==
// @name 招聘求职助手
// @namespace http://tampermonkey.net/
// @version 0.2
// @description 暂时只支持boss直聘。支持给岗位添加备注,下次可以直接看到自己添加的备注
// @author indigo6a
// @match https://www.zhipin.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=github.com
// @grant GM_setValue
// @grant GM_getValue
// @run-at document-idle
// @license MIT
// @downloadURL https://update.greasyfork.icu/scripts/465859/%E6%8B%9B%E8%81%98%E6%B1%82%E8%81%8C%E5%8A%A9%E6%89%8B.user.js
// @updateURL https://update.greasyfork.icu/scripts/465859/%E6%8B%9B%E8%81%98%E6%B1%82%E8%81%8C%E5%8A%A9%E6%89%8B.meta.js
// ==/UserScript==
// 监听查询工作的ajax请求
/**
const originFetch = fetch
unsafeWindow.fetch = (...args)=>{
console.log("fetch:",args[0])
if(args[0].indexOf("search/joblist.json")!=-1) {
}
return originFetch(...args);
}
**/
// 拦截http请求
function addXMLRequestCallback(callback){
var oldSend, i;
if( XMLHttpRequest.callbacks ) {
// we've already overridden send() so just add the callback
XMLHttpRequest.callbacks.push( callback );
} else {
XMLHttpRequest.callbacks = [callback];
oldSend = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function(){
for( i = 0; i < XMLHttpRequest.callbacks.length; i++ ) {
XMLHttpRequest.callbacks[i]( this );
}
oldSend.apply(this, arguments);
}
}
}
(function() {
'use strict';
addXMLRequestCallback( function( xhr ) {
xhr.addEventListener("load", function(){
//判断页面加载状态的
if ( xhr.readyState == 4 && xhr.status == 200 ) {
console.log("load url:",xhr.responseURL);
//判断是不是自己想要监听的URl地址 字符串就是 你需要监听的地址
if ( xhr.responseURL.includes("search/joblist.json")||xhr.responseURL.includes("job/list.json") ) {
console.log(xhr.responseURL);
// 请求完列表后,1.5秒开始处理列表
setTimeout(processPage,1500)
}
}
});
});
console.log("init...");
// 处理页面
function processPage() {
let items = document.querySelectorAll(".job-card-wrapper");
// console.log("result:",items);
let data = GM_getValue("data");
console.log("get init data:",data);
// 添加备注按钮和查询备注信息
for(let item of items) {
// 获取公司名字和岗位名字
let companyName = "";
let jobName = "";
let companyEle = item.querySelector(".company-name")
let jobNameEle = item.querySelector(".job-name")
// 右下角的描述
let infoDescEle = item.querySelector(".info-desc")
if(companyEle) {
companyName = companyEle.textContent
}
if(jobNameEle) {
jobName = jobNameEle.textContent
}
// 生成岗位的唯一键
let key = companyName+"-"+jobName;
if(data[key]) {
let remark = data[key].remark
infoDescEle.innerHTML=`${remark}${infoDescEle.innerHTML}`;
}
// 添加按钮到位置
let tagList = item.querySelector(".job-info")
if(!tagList) {
console.error("没有找到taglist,插入按钮失败");
return;
}
// 生成一个a标签包围按钮,不然点击后会跳到连接
let a = document.createElement("a");
a.href="javascript:;"
let button = document.createElement("button");
button.innerText="修改备注";
button.addEventListener("click",(event)=>{
event.stopPropagation();
console.log("点击添加备注",companyName)
let key = companyName+"-"+jobName;
let data = GM_getValue("data", {});
console.log("get data",data)
let detail = data[key]||{
remark:''
};
let remark = '';
if(detail) {
remark = detail['remark']
}
let value = prompt( key,remark);
if(value==null) {
// cancel
return;
}
detail['remark']=value
data[key] = detail;;
GM_setValue("data",data)
},true);
button.type="button";
a.appendChild(button);
tagList.appendChild(a)
}
}
// Your code here...
})();