在iframe中收听鼠标点击和按键事件

时间:2014-10-12 10:33:47

标签: javascript jquery html iframe

我想为嵌入式swipe.to演示文稿的每张幻灯片添加一些解释。 因此,我试图计算按下iframe中的按钮或完成某些按键的次数。目标是确定用户在哪张幻灯片上显示适当的幻灯片说明。

如果用户点击标识为#next的链接或按空格键或向右箭头,则整数应递增。如果用户点击标识为#previous的链接或按左箭头,则整数应减少。

关于鼠标点击事件,answer对我有很大帮助。它就像一个魅力。但是我仍然很难让按键事件发挥作用。

这就是我所拥有的:

嵌入代码

<figure class="swipe">
   <iframe src="https://www.swipe.to/embed/0882x" allowfullscreen></iframe>
</figure>
<style>figure.swipe{display:block;position:relative;padding-bottom:56.25%;height:0;overflow:hidden;}figure.swipe iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none;}</style>

确定幻灯片计数的代码

<script>
        $('body iframe').load(function(){
            var i = 0;
            $('body iframe').contents().find('#next').bind('click',function(e) {
                    i++;
                    alert(i);
            });

            $('body iframe').contents().bind('keypress',function(e) {
                    if(e.keyCode == 32){
                        i++;
                        alert(i);
                    }
            });

            $('body iframe').contents().bind('keypress',function(e) {
                    if(e.keyCode == 39){
                        i++;
                        alert(i);
                    }
            });

            $('body iframe').contents().find('#previous').bind('click',function(e) {
                    i--;
                    alert(i);
            });

            $('body iframe').contents().bind('keypress',function(e) {
                    if(e.keyCode == 37){
                        i--;
                        alert(i);
                    }
            });


        });
</script>

1 个答案:

答案 0 :(得分:1)

有可能这样:

//left arrow
$(document.getElementById('frame-id').contentWindow.document).keydown(function(e){
                if(e.keyCode == 37){
                    i--;
                };
});

//right arrow and space bar
$(document.getElementById('test').contentWindow.document).keydown(function(e){
                if(e.keyCode == 32 || e.keyCode == 39){
                    i++;
                };
});

这应嵌入$('body iframe').load(function(){ }