Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  5 1570
Hei. Jeg lurer på om det er noen måte man kan søke gjennom en HTML side og fjerne alle tags av en spesifikk type, som befinner seg inne i en annen spesifikk type.

Jeg vil fjerne alle "a" elementer som er barn, barnebarn, barnebarnebarn, eller dypere, av et "iframe" element.

Grunnen er fordi jeg gjerne vil fjerne reklame fra et par norske nettsider. Problemet er at de oppdager adblock, og lager vell så mange irriterende elementer for å be deg om å skru det på.

Det ser ut som nesten alle reklamene er av typen "iframe", mens resten av artiklene ikke er det. Jeg har prøvd å fjerne alle iframes - noe som virker - men da tror sidene at jeg har adblock kjørende.

Løsningen jeg har kommet frem til nå er å endre css properties på alle iframes så de blir gjennomsiktige. Den største irritasjonen var at de var animerte og distraherende, så dette er i grunn løst. Det gjennværende problemet er at linkene fortsatt er der, så man risikerer å trykke på dem uten å mene det.

Jeg gjør dette altså i javascript, med jquery, som kjøres lokalt etter at siden har blitt lastet ned.
:(){ :|:& };:
tripflag's Avatar
av sikkerhetsmessige årsaker så har ikke javascript innsikt i innholdet til iframes

foreslår at du heller legger på følgende css-regler:

$('iframe').css({
'display': 'inline-block',
'width': '1px',
'height': '1px'
});
olli408's Avatar
Trådstarter
@tripflag:
Ah, det var jeg ikke klar over!
Jeg prøve koden din, den virker i rundt ett sekund, før nettsiden setter width og height tilbake til standard. Noen andre ideer?

Edit: Det virket når jeg la til et tidsdelay på noen sekunder, takk for svar!
Sist endret av olli408; 11. mai 2015 kl. 18:59. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Uten å se koden du prøver å manipulere er det vanskelig å si 100%, men mulig det fremdeles er noe javascript-kode som kjører, selv etter at du har kjørt din kode.

Du kan forsøke dette: http://learn.jquery.com/using-jquery...ocument-ready/

Code included inside $( window ).load(function() { ... }) will run once the entire page (images or iframes), not just the DOM, is ready.
Vis hele sitatet...
Sist endret av s1gh; 11. mai 2015 kl. 19:00.
:(){ :|:& };:
tripflag's Avatar
du kan prøve å flytte reklamen ut av browser-vinduet:

$('iframe').css({
'display': 'inline-block',
'width': '1px',
'height': '1px',
'position': 'fixed',
'left': '-4000px'
});

om dette også blir resatt kunne du putta det i en timer:

function nope() {
$('iframe')...});
setTimeout(nope, 250);
}
nope();

EDIT: on load (som nevnt over) er muligens nok, og er i så fall bedre enn en timer
Sist endret av tripflag; 11. mai 2015 kl. 19:02.
olli408's Avatar
Trådstarter
Jeg har altså løst det: Jeg gjør først iframes gjennomsiktige ved page load, for så å vente i 5 sekunder, og deretter kjøre koden tripflag foreslo i sin første post for å "fjerne" dem. Dette funker bra

Edit: om noen skulle være interreserte så er koden jeg bruker:

Kode

$('iframe').css("opacity","0.02");
setTimeout(function(){
    $('iframe').css("display","inline-block");
    $('iframe').css("width","1px");
    $('iframe').css("height","1px");
}, 5000);
Sist endret av olli408; 11. mai 2015 kl. 19:10.