Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name OLX - Usuń ofertę
- // @namespace https://www.olx.pl/
- // @version 1.2
- // @description Dodaje przycisk "X" do każdej oferty na OLX, który umożliwia usunięcie oferty z widoku
- // @author BlackReven / ChatGPT
- // @match https://www.olx.pl/*
- // @icon https://www.google.com/s2/favicons?sz=64&domain=olx.pl
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- // Funkcja do generowania unikalnego ID dla oferty na podstawie treści HTML (w razie braku ID)
- function generateOfferId(offer) {
- return offer.querySelector('a').href || offer.innerHTML.hashCode();
- }
- // Dodanie metody do prototypu Stringa do generowania hashCode (na wypadej braku ID)
- String.prototype.hashCode = function() {
- var hash = 0, i, chr;
- if (this.length === 0) return hash;
- for (i = 0; i < this.length; i++) {
- chr = this.charCodeAt(i);
- hash = ((hash << 5) - hash) + chr;
- hash |= 0; // Konwersja do 32-bitowego integera
- }
- return hash;
- };
- // Pobieranie listy usuniętych ofert z localStorage
- function getRemovedOffers() {
- let removedOffers = localStorage.getItem('removedOffers');
- return removedOffers ? JSON.parse(removedOffers) : [];
- }
- // Zapisywanie listy usuniętych ofert do localStorage
- function setRemovedOffers(offers) {
- localStorage.setItem('removedOffers', JSON.stringify(offers));
- }
- // Usuwanie oferty i zapisywanie jej ID
- function removeOffer(offer) {
- const offerId = generateOfferId(offer);
- if (offerId) {
- let removedOffers = getRemovedOffers();
- removedOffers.push(offerId);
- setRemovedOffers(removedOffers);
- offer.style.display = 'none';
- }
- }
- // Funkcja dodająca przycisk "X" do każdej oferty
- function addRemoveButtons() {
- let offers = document.querySelectorAll('[data-cy="l-card"]');
- offers.forEach(function(offer) {
- const offerId = generateOfferId(offer);
- // Jeśli oferta jest już usunięta, ukryj ją
- if (getRemovedOffers().includes(offerId)) {
- offer.style.display = 'none';
- return;
- }
- // Dodaj przycisk "X", jeśli jeszcze nie istnieje
- if (!offer.querySelector('.remove-offer-btn')) {
- let removeButton = document.createElement('button');
- removeButton.innerText = 'X';
- removeButton.className = 'remove-offer-btn';
- removeButton.style.position = 'absolute';
- removeButton.style.top = '10px';
- removeButton.style.right = '10px';
- removeButton.style.backgroundColor = 'red';
- removeButton.style.color = 'white';
- removeButton.style.border = 'none';
- removeButton.style.borderRadius = '50%';
- removeButton.style.width = '30px';
- removeButton.style.height = '30px';
- removeButton.style.cursor = 'pointer';
- removeButton.style.zIndex = '9999';
- removeButton.addEventListener('click', function(event) {
- event.preventDefault();
- event.stopPropagation();
- removeOffer(offer);
- });
- offer.style.position = 'relative';
- offer.appendChild(removeButton);
- }
- });
- }
- // Funkcja, która zostanie wywołana po załadowaniu strony
- function onLoad() {
- addRemoveButtons();
- // Dodajemy event listener do scrolla strony
- window.addEventListener('scroll', addRemoveButtons);
- }
- // Wywołujemy funkcję onLoad po załadowaniu strony
- window.addEventListener('load', onLoad);
- })();
Advertisement
Add Comment
Please, Sign In to add comment