您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Removes offers from businessfrance search page from location given by the user
// ==UserScript== // @name Job Filter businessfrance // @namespace http://tampermonkey.net/ // @version 2024-10-21 // @license MIT // @description Removes offers from businessfrance search page from location given by the user // @author Thomas Abecassis // @match https://mon-vie-via.businessfrance.fr/offres/recherche?* // @icon https://www.google.com/s2/favicons?sz=64&domain=businessfrance.fr // @grant GM_getValue // @grant GM_setValue // @grant GM_registerMenuCommand // ==/UserScript== (function() { 'use strict'; const removedJobOfferArray = []; function removeJobOfferDiv(div){ div.style.display = 'none'; removedJobOfferArray.push(div); } function resetHiddenJobOffers(){ removedJobOfferArray.forEach(div=>div.style.display = 'block') removedJobOfferArray.length = 0; } function getKeywords() { return GM_getValue('jobFilterKeywords', ['bruxelles', 'luxembourg', '(inactif)']); } function saveKeywords(keywords) { GM_setValue('jobFilterKeywords', keywords); } function promptForKeywords() { const currentKeywords = getKeywords(); const input = prompt('Enter the keywords to be filtered, separated by commas:', currentKeywords.join(', ')); if (input !== null) { const newKeywords = input.split(',').map(keyword => keyword.trim()).filter(keyword => keyword !== ''); saveKeywords(newKeywords); resetHiddenJobOffers(); removeOfferByKeywords(getKeywords()); } } GM_registerMenuCommand('Edit filter keywords', promptForKeywords); function removeOfferByKeywords(keywords) { const jobOfferDivs = document.querySelectorAll('.latest_offers div'); jobOfferDivs.forEach(div => { const locationElement = div.querySelector('.location'); if (locationElement) { const location = locationElement.textContent; if (keywords.some(keyword => location.toLowerCase().includes(keyword.toLowerCase()))) removeJobOfferDiv(div); } }); } function observeJobOffersChanges() { const observer = new MutationObserver(() => { removeOfferByKeywords(getKeywords()); }); const JobOffersContainer = document.querySelector('.home_offre'); if(JobOffersContainer){ observer.observe(JobOffersContainer, { childList: true, subtree: true }); }else { console.error('The job offers container hasn\'t been found.'); } } document.readyState === 'complete' ? observeJobOffersChanges() : window.addEventListener('load', observeJobOffersChanges()); })();