2016-11-02 1 views
1

Я хочу посчитать состояние набора кликов и отобразить сообщение для 2 условий. Если в первый раз щелкнуть по нему, появится сообщение «clicked». Я щелкнул второй раз, пока на дисплее не появится надпись «pauseed clicked». Я пробую этот код. Он обнаруживает щелчок внутри iframe, но не следующее условие.Count click inside iframe javascript

var action = 1; 
 
var monitor = setInterval(function(){ 
 
    var elem = document.activeElement; 
 
    if(elem && elem.tagName == 'IFRAME'){ 
 
    if (action == 1) { 
 
     message.innerHTML = 'Clicked'; 
 
     action = 2; 
 
    } else { 
 
     message.innerHTML = 'paused Clicked'; 
 
     action = 1; 
 
    } 
 
     clearInterval(monitor); 
 
    } 
 
}, 100);
iframe { 
 
    width: 500px; 
 
    height: 300px; 
 
}
<iframe id="iframe" src="//example.com"></iframe> 
 
<div id="message"></div>
http://jsfiddle.net/lemonkazi/16sdrqbq/

+0

Он дает любые ошибки javascript в консоли инспектора? – joshpj1

+0

@JoshJackson Я добавил jsfiddle и не обнаружил ошибок в консоли. –

ответ

2

Снят интервал в нижней части (clearInterval(monitor);), так что ни в одной точке эта функция будет снова работать. Он корректно устанавливает действие на 2, но для проверки action == 1 ему потребуется снова запустить эту функцию.

К сожалению, что вы пытаетесь выполнить, невозможно (обнаружение нескольких кликов внутри iframe), если вы не контролируете, что происходит внутри iframe. activeElement на самом деле довольно умный, но так как нажатие снова в iframe не заставит его снова меняться, нет смысла ощущать другой щелчок. Вам нужно будет привязать событие к внутреннему кадру, для которого требуется доступ с одним и тем же источником. См. here и here.