Blendet Anzeigen mit Suchen+ aus und passt das Raster automatisch an
Size
2.8 KB
Version
1.0.1
Created
Feb 7, 2026
Updated
about 1 month ago
1// ==UserScript==
2// @name ImmoScout24 Suchen+ Filter
3// @description Blendet Anzeigen mit Suchen+ aus und passt das Raster automatisch an
4// @version 1.0.1
5// @match https://*.immobilienscout24.de/*
6// @icon https://www.immobilienscout24.de/favicon.ico
7// ==/UserScript==
8(function() {
9 'use strict';
10
11 console.log('ImmoScout24 Suchen+ Filter gestartet');
12
13 // Funktion zum Ausblenden von Suchen+ Anzeigen
14 function hideSuchenPlusListings() {
15 // Finde alle Anzeigen-Karten
16 const listingCards = document.querySelectorAll('div[data-obid].listing-card');
17 let hiddenCount = 0;
18
19 listingCards.forEach(card => {
20 // Prüfe ob die Karte ein Suchen+ Badge enthält
21 const plusLogo = card.querySelector('[data-testid="plus-logo"]');
22 const paywallLabel = card.querySelector('.paywall-label');
23
24 if (plusLogo || paywallLabel) {
25 // Blende die Anzeige aus
26 card.style.display = 'none';
27 hiddenCount++;
28 console.log('Suchen+ Anzeige ausgeblendet:', card.getAttribute('data-obid'));
29 }
30 });
31
32 if (hiddenCount > 0) {
33 console.log(`${hiddenCount} Suchen+ Anzeigen ausgeblendet`);
34 }
35 }
36
37 // Debounce-Funktion für Performance
38 function debounce(func, wait) {
39 let timeout;
40 return function executedFunction(...args) {
41 const later = () => {
42 clearTimeout(timeout);
43 func(...args);
44 };
45 clearTimeout(timeout);
46 timeout = setTimeout(later, wait);
47 };
48 }
49
50 // Initialisierung
51 function init() {
52 console.log('Initialisiere Suchen+ Filter...');
53
54 // Erste Ausführung nach kurzer Verzögerung
55 setTimeout(() => {
56 hideSuchenPlusListings();
57 }, 1000);
58
59 // Beobachte Änderungen im DOM (z.B. beim Scrollen oder Laden neuer Anzeigen)
60 const observer = new MutationObserver(debounce(() => {
61 hideSuchenPlusListings();
62 }, 500));
63
64 // Beobachte den Container mit den Anzeigen
65 const listingsContainer = document.querySelector('[data-testid="ListingsGrid"], .cardContainer');
66 if (listingsContainer) {
67 observer.observe(listingsContainer, {
68 childList: true,
69 subtree: true
70 });
71 console.log('DOM Observer aktiviert');
72 } else {
73 console.log('Anzeigen-Container nicht gefunden, versuche es später erneut...');
74 // Versuche es nach weiteren 2 Sekunden nochmal
75 setTimeout(init, 2000);
76 }
77 }
78
79 // Starte wenn die Seite geladen ist
80 if (document.readyState === 'loading') {
81 document.addEventListener('DOMContentLoaded', init);
82 } else {
83 init();
84 }
85})();