// ==UserScript== // @name Boss直聘职位排序 // @namespace http://tampermonkey.net/ // @version 0.4 // @description A Tampermonkey script using jQuery // @author You // @match https://www.zhipin.com/* // @grant none // @license MIT // @downloadURL none // ==/UserScript== (function () { 'use strict'; try { const realXHR = window.XMLHttpRequest; window.XMLHttpRequest = function () { const xhr = new realXHR(); const oldOpen = xhr.open; xhr.open = function (method, url, async, user, password) { this.addEventListener('readystatechange', function () { }, false); oldOpen.apply(this, arguments); }; xhr.addEventListener('load', function () { if (this.status === 200 && (this.responseURL.includes('/list.json?') || this.responseURL.includes('/joblist.json?'))) { loadALlScript().then(res => { createRootDom() createTable(JSON.parse(xhr.responseText).zpData.jobList) }) } }, false); return xhr; }; function loadALlScript() { const scriptList = [ 'https://code.jquery.com/ui/1.12.1/jquery-ui.min.js' ] const styleList = [ 'https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css' ] return Promise.all([...scriptList.map(createScript), ...styleList.map(createStyleLink)]) } function createScript(href) { return new Promise((resolve, reject) => { const script = document.createElement('script') script.src = href document.head.appendChild(script) script.onload = () => { resolve(true) } script.onerror = () => { reject(false) } }) } function createStyleLink() { return new Promise((resolve, reject) => { const link = document.createElement('link') link.rel = 'stylesheet' link.href = 'https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css' document.head.appendChild(link) link.onload = () => { resolve(true) } link.onerror = () => { reject(false) } }) } function createTable(data) { // 创建新的 DOM 元素 var newElement = $('