防止用箭头键滚动

时间:2010-07-08 21:07:36

标签: javascript html scroll

如果内部的iframe被聚焦,如何在按下箭头键时阻止html页面滚动?

我在chrome中获取此错误

iframe很专注,我知道它专注。无论如何父母都会滚动。

5 个答案:

答案 0 :(得分:12)

iframe文档中的以下代码将阻止它滚动:

document.onkeydown = function(evt) {
    evt = evt || window.event;
    var keyCode = evt.keyCode;
    if (keyCode >= 37 && keyCode <= 40) {
        return false;
    }
};

答案 1 :(得分:0)

这除IE之外有效:

window.top.document.onkeydown = function(evt) {
    evt = evt || window.event;
    var keyCode = evt.keyCode;
    if (keyCode >= 37 && keyCode <= 40) {
        return false;
    }
};

答案 2 :(得分:0)

这段代码可以解决问题:

<强>的JavaScript

<script type="text/javascript">
  function focusOnIframe(iFrameID) {
    if (frames[iFrameID]!=undefined)
      frames[iFrameID].focus(); // Works in all browser, except Firefox
    else
      document.getElementById(iFrameID).focus();  // Works in Firefox
  }
</script>

HTML(示例)

<input type="button" id="setfocus" value="Set focus" onclick="focusOnIframe('myiframe')" />

<p>Bla<br />Bla<br />Bla<br />Bla<br />Bla<br /></p>  <!-- Just some filler -->

<iframe id="myiframe" src="yourpage.html"></iframe>

<p>Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br />Bla<br /></p>  <!-- Just some filler -->

我在Firefox 3.6.6,Iron 5.0.380,Opera 10.60,IE 6和IE 8中测试过它。

答案 3 :(得分:0)

对于无法访问加载到 iframe 的页面源的人的回答:

我解决了 scroll 事件传播到父元素(主 html 文档)的问题,方法是使用 CSS div 将整个页面分成 2 个 position:fixed,第一个带有整个 html 页面(父) 和第二个仅使用 iframe,例如将屏幕分成两半并在分屏上看到 2 个浏览器窗口。 或更灵活的升级:使第一个 div 的 CSS width:100vw;height:100vh;(+ 微调 CSS top|left|bottom|right)和第二个 div 可通过 CSS resize({{1 }}) 或任何更智能的 JS 代码(例如 jQueryUI

答案 4 :(得分:-1)

您可以使用以下代码来防止使用箭头键滚动:

var objImage= null;

            function getKeyAndMove(e){

            var idtestor = document.getElementById('idPlacer2').value; 
                objImage=  document.getElementById(idtestor);               
                objImage.style.position='relative';


                var key_code=e.which||e.keyCode;
                switch(key_code){
                    case 37: //left arrow key
                        moveLeft();
e.preventDefault(); 
                        break;
                    case 38: //Up arrow key
                        moveUp();
e.preventDefault(); break;
                        break;
                    case 39: //right arrow key
                        moveRight();
e.preventDefault(); 
                        break;
                    case 40: //down arrow key
                        moveDown();
e.preventDefault(); break;
                        break;                      
                }
            }
            function moveLeft(){
                objImage.style.left=parseInt(objImage.style.left)-5 +'px';
window.scrollBy(-5, 0);
            }
            function moveUp(){
                objImage.style.top=parseInt(objImage.style.top)-5 +'px';
window.scrollBy(0, -5);
            }
            function moveRight(){
                objImage.style.left=parseInt(objImage.style.left)+5 +'px';
window.scrollBy(5, 0);
            }k`a`
            function moveDown(){
                objImage.style.top=parseInt(objImage.style.top)+5 +'px';
window.scrollBy(0, 5);
            }