2

经过大量研究(在这里和其他地方),我找到了一种防止键盘按下滚动 HTML 页面的方法:

var ar=new Array(33,34,35,36,37,38,39,40);
var prevent_acc = function(e) {                    
     var key = e.which;
      console.log(key);
      //if(key==35 || key == 36 || key == 37 || key == 39)
      if($.inArray(key,ar) > -1) {
          console.log("preventing")
          e.preventDefault();
          return false;
      }
      return true;                
}

$(document).keydown(prevent_acc);
$(document).keyup(prevent_acc);                
$(document).keypress(prevent_acc);

当焦点在主页上时,这一切都很好。但是,当 iframe 容器获得焦点时,我遇到了一个问题 - 然后,整个页面被滚动并且该功能没有被触发。

我是否需要在每个 iframe 中插入一些代码,或者有没有办法捕捉从中冒泡的事件并阻止它?

4

1 回答 1

0

我发现一个很好的解决方案是倾听焦点发生然后改变它......所以

$('iFrame').click(function(){
 window.focus();
});

这仍然会让 iframe 内的点击发生,但之后会立即将焦点返回到您的窗口。

于 2013-02-27T03:15:20.203 回答