// ==UserScript== // @name Boss直聘职位排序 // @namespace http://tampermonkey.net/ // @version 0.5 // @description A Tampermonkey script using jQuery // @author You // @match https://www.zhipin.com/* // @grant none // @license MIT // @downloadURL https://update.greasyfork.icu/scripts/489032/Boss%E7%9B%B4%E8%81%98%E8%81%8C%E4%BD%8D%E6%8E%92%E5%BA%8F.user.js // @updateURL https://update.greasyfork.icu/scripts/489032/Boss%E7%9B%B4%E8%81%98%E8%81%8C%E4%BD%8D%E6%8E%92%E5%BA%8F.meta.js // ==/UserScript== (function () { 'use strict'; try { let isLoad = false 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?'))) { if (isLoad) { createTable(JSON.parse(xhr.responseText).zpData.jobList) return } isLoad = true loadALlScript().then(res => { addCustomStyle() 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 = $('