Zdarzenie kliknięcia na ifreame

0

Mam na stronie ifreme'a z reklamą i chcę zrobić funkcjonalność, aby po kliknięciu w reklamę (kliknięcie powoduje otworzenie nowej strony w nowym oknie przeglądarki) sam iframe zniknął ze strony. Niestety zdarzenie $('iframe').click() się nie odpala. Próbowałem także następującego kodu, ale również nie pomogło:

$('body').click(function(e){
        var position = $('iframe').offset(),
            width = $('iframe').width(),
            height = $('iframe').height();
        
        if((e.pageX>=position.left || e.pageX<=position.left+width) &&
            e.pageY>=position.top || e.pageY<=position.top+height)
            $('iframe').remove();
    }); 
0

lipa bo reklama jest z innej domeny i nie zalatwisz tego zwyklym bindowaniem. noramlnie by sie dalo.

wiec albo przezroczysty div nalozony na reklame i przechwytywanie klikkniecia w twoj przezroczysty div.

ew jakis skrypt: https://github.com/finalclap/iframeTracker-jquery

0

Ale kliknięcie w nałożony na niego div nie odpali reklamy. Chyba, że po kliknięciu w div da się odpalić zdarzenie kliknięcia linka w ifraimie.

1

Niestety - nie ma takiej możliwości. Jeżeli reklamodawca nie udostępnił w tym celu żadnego API, no to nic nie podziałasz.

Nie możesz zrobić NIC z iframem na innej domenie - nie odczytasz zawartości, nie nadpiszesz styli, nie przechwycisz klików, nie wywołasz funkcji JS. Kwestie bezpieczeństwa.

0

Reklama otwiera się w nowym oknie, więc może da się wychwycić zdarzenie otwarcia nowego okna przeglądarki, albo opuszczenia przez usera bieżącej strony?

0

Opuszczenia bieżącej strony jeszcze by się dało, ale nie wiesz na jaką stronę przejdzie

0

tutaj panowie rozkminiaja na kilka sposobow => http://stackoverflow.com/questions/3680429/click-through-a-div-to-underlying-elements

pierwszyz gory sobie odpusc, bo to przepuszcza kliki, a ty chce je zlapac, wiec kolejny przyklad jest dla ciebie. ogolnie zasada jest taka, ze pokrywasz iframe przezroczystym divem, lapiesz klikniecie i teraz chowasz (w twoim przypadku mzoesz rowniez usunac) diva i pobierajac koordynaty klikniecia wywolujesz kliknecie w tym samym miejscu okna przegladarki (czyli de facto klikasz skryptowo w tym samym miejscu jeszcze raz i potem mozesz sobie zamknac iframe).

0

@szalonyfacet: ale tym sposobem wybierzesz tylko cały element iframe - nie klikniesz w zawartość iframe. ten sam efekt uzyskasz przez $('iframe').click()

Nie ma opcji zrobienia czegoś takiego bez API ze strony reklamodawcy

0
dzek69 napisał(a):

Opuszczenia bieżącej strony jeszcze by się dało, ale nie wiesz na jaką stronę przejdzie

A jakaś podpowiedź jak to wykryć, bo beforeunload działa jeśli zamykam bieżącą kartę, a nie przechodzę do innej?

1

przypnij blur do window

0

Dzięki, z blurem pomogło. Musiałem zrobić tylko jeden myk, bo jeśli dałem po prostu:

$(window).blur(function(){ $('iframe').remove(); })

to nie odpalała się strona z iframe'a. Musiałem dać timeoutu na 100 milisekund i dopiero kasować iframe'a.

0

ale jaki to ma sens, wystarczy otworzyć Twoją stronę, wrócić na fejsbuka, znowu na Twoją i nagle nie ma reklam :P

0
dzek69 napisał(a):

ale jaki to ma sens, wystarczy otworzyć Twoją stronę, wrócić na fejsbuka, znowu na Twoją i nagle nie ma reklam :P

Jasne, ale niewiele osób się skapnie, że tak to działa, więc prędzej klikną w reklamę niż sobie pójdą ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1