Greasy Fork

Greasy Fork is available in English.

招聘求职助手

暂时只支持boss直聘。支持给岗位添加备注,下次可以直接看到自己添加的备注

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==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
// ==/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=`<span style="color:red">${remark}</span><span>${infoDescEle.innerHTML}</span>`;
           }

           // 添加按钮到位置
           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...
})();