Entendo que não é possível dizer o que o usuário está fazendo dentro de um iframe
se for um domínio cruzado. O que eu gostaria de fazer é acompanhar se o usuário clicou em tudo no iframe
. Eu imagino um cenário em que há um invisível div
em cima do iframe
e o e div
então passará o evento de clique para o iframe
.
É algo assim possível? Se for, então como eu faria isso? Os iframes
anúncios são, portanto, não tenho controle sobre as tags usadas.
javascript
iframe
ads
dom-events
click-tracking
Russ Bradberry
fonte
fonte
Respostas:
Não. Tudo o que você pode fazer é detectar o mouse entrando no iframe e potencialmente (embora não seja confiável) quando ele voltar (ou seja, tentar descobrir a diferença entre o ponteiro que passa pelo anúncio a caminho de outro lugar e o restante) no anúncio).
Não, não há como falsificar um evento de clique.
Ao capturar a ratoeira, você impediria que o clique original chegasse ao iframe. Se você pudesse determinar quando o botão do mouse estava prestes a ser pressionado, poderia tentar tirar o div invisível do caminho para que o clique passasse ... mas também não há evento que seja acionado imediatamente antes da queda do mouse.
Você pode tentar adivinhar, por exemplo, olhando para ver se o ponteiro parou, supondo que um clique esteja prestes a chegar. Mas é totalmente não confiável e, se você falhar, acaba de perder um clique.
fonte
Isso é certamente possível. Isso funciona no Chrome, Firefox e IE 11 (e provavelmente outros).
JSFiddle
Advertência: Isso detecta apenas o primeiro clique. Pelo que entendi, é tudo o que você deseja.
fonte
blur
evento do iframe não é acionado ).Com base na resposta de Mohammed Radwan, vim com a seguinte solução jQuery. Basicamente, o que faz é acompanhar o que as pessoas do iFrame estão pairando. Então, se a janela ficar embaçada, provavelmente significa que o usuário clicou no banner iframe.
o iframe deve ser colocado em uma div com um ID, para garantir que você saiba em qual iframe o usuário clicou:
tão:
... isso mantém o overiFrame em -1 quando nenhum iFrames é pairado ou o 'bannerid' definido na divisão de quebra automática quando um iframe é pairado. Tudo o que você precisa fazer é verificar se 'overiFrame' está definido quando a janela fica embaçada, assim: ...
Solução muito elegante com uma desvantagem menor: se um usuário pressionar ALT-F4 ao passar o mouse sobre um iFrame, ele o registrará como um clique. Porém, isso só aconteceu no FireFox, IE, Chrome e Safari não o registraram.
Mais uma vez obrigado Mohammed, solução muito útil!
fonte
setTimeout(function(){ window.focus(); }, 0);
. Agora, o usuário clica, coloca o foco no iframe, o script retira esse foco e agora pode monitorar outras alterações de foco de cliques futuros.Esta é uma solução pequena que funciona em todos os navegadores, mesmo no IE8:
Você pode testá-lo aqui: http://jsfiddle.net/oqjgzsm0/
fonte
O código a seguir mostrará se o usuário clicar / passar o mouse ou sair do iframe: -
Você precisa substituir o src no iframe pelo seu próprio link. Espero que isso ajude. Atenciosamente, Mo.
fonte
Acabei de encontrar esta solução ... Eu tentei, adorei ..
Funciona para iframes entre domínios para desktop e celular!
Ainda não sei se é à prova de falhas
Feliz codificação
fonte
Você pode conseguir isso usando o evento blur no elemento window.
Aqui está um plugin jQuery para rastrear cliques em iframes (ele acionará uma função de retorno de chamada personalizada quando um iframe for clicado): https://github.com/finalclap/iframeTracker-jquery
Use-o assim:
fonte
consulte http://jsfiddle.net/Lcy797h2/ para obter minha solução prolongada que não funciona de maneira confiável no IE
fonte
Isso funciona para mim em todos os navegadores (incluído no Firefox)
https://gist.github.com/jaydson/1780598
https://jsfiddle.net/sidanmor/v6m9exsw/
<iframe id="idanmorblog" src="https://sidanmor.com/" style="width:400px;height:600px" ></iframe>
fonte
Mohammed Radwan, sua solução é elegante. Para detectar cliques em iframe no Firefox e IE, você pode usar um método simples com document.activeElement e um timer, no entanto ... Pesquisei nas interwebs um método para detectar cliques em um iframe no Chrome e Safari. À beira de desistir, acho sua resposta. Obrigado senhor!
Algumas dicas: Eu achei sua solução mais confiável ao chamar a função init () diretamente, e não através de attachOnloadEvent (). Obviamente, para fazer isso, você deve chamar init () somente após o iframe html. Então, seria algo como:
fonte
Você pode fazer isso para fazer bolhas de eventos no documento pai:
Apenas estenda a lista de eventos para mais eventos.
fonte
Eu tive uma situação em que tinha que rastrear cliques em um botão de mídia social puxado por um iframe. Uma nova janela seria aberta quando o botão fosse clicado. Aqui estava a minha solução:
fonte
http://jsfiddle.net/QcAee/406/
Basta criar uma camada invisível sobre o iframe que voltará quando clicar e subir quando o evento Mouseleave for disparado!
Precisa de jQuery
esta solução não propaga primeiro clique dentro do iframe!
fonte
Isso definitivamente funciona se o iframe for do mesmo domínio que o site pai. Não testei para sites entre domínios.
Sem o jQuery, você poderia tentar algo assim, mas novamente eu não tentei isso.
Você pode até filtrar seus resultados:
fonte
A combinação da resposta acima com a capacidade de clicar repetidamente sem clicar fora do iframe.
fonte
Podemos capturar todos os cliques. A idéia é redefinir o foco em um elemento fora do iFrame após cada clique:
JSFiddle
fonte
Eu acredito que você pode fazer algo como:
usando jQuery para fazer isso.
fonte
Como encontrado lá: Detectar o Click no Iframe usando JavaScript
=> Podemos usar iframeTracker-jquery :
fonte
Com base na resposta de Paul Draper, criei uma solução que funciona continuamente quando você tem Iframes que abrem outra guia no navegador. Quando você retorna a página, continua ativa para detectar o clique na estrutura, esta é uma situação muito comum:
O código é simples, o evento de desfoque detecta a perda de foco quando o iframe é clicado e testa se o elemento ativo é o iframe (se você tiver vários iframe para saber quem foi selecionado) essa situação é frequente quando você tem quadros de publicidade .
O segundo evento aciona um método de foco quando você retorna à página. é usado o evento de alteração de visibilidade.
fonte
Aqui está a solução usando abordagens sugeridas com hover + blur e truques de elementos ativos, não bibliotecas, apenas js puros. Funciona bem para FF / Chrome. Principalmente a abordagem é igual à proposta por @Mohammed Radwan, exceto pelo uso de um método diferente proposto por @ zone117x para rastrear o clique do iframe no FF, porque o window.focus não está funcionando sem as configurações adicionais do usuário :
Aqui está o método composto:
fonte
Pressupostos -
Isso funciona para iframes de fontes e sem fontes
Se uma nova guia for aberta / a mesma página descarregar e o ponteiro do mouse estiver dentro do Iframe, um clique será considerado
fonte