2016-11-02 5 views
1

クリックして設定条件を数え、2つの条件のメッセージを表示したいと思います。 初めてクリックすると、「クリックされました」というメッセージが表示されます。 2回目にクリックすると、「一時停止」が表示されます。 私はこのコードを試しています。 iframe内のクリックを検出していますが、条件を満たしていません。Count 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を参照してください。

関連する問題