光标在URL上时如何防止f5

时间:2016-02-09 13:11:05

标签: javascript browser

通常情况下,我们可以阻止使用带有javascript的F5进行页面刷新,如下所示

if (keyCode == 116)
  event.preventDefault();

但是我希望当光标在URL上时阻止F5刷新工作。这不是应用程序刷新,这是一个页内浏览器刷新。 当光标在URL上并且用户按下F5键时,页面将刷新。我需要阻止这一点。

请帮帮我。

3 个答案:

答案 0 :(得分:1)

你不能阻止这种情况发生。一旦页面上的焦点丢失(即当您在URL栏中单击时),javascript将不再接收键盘事件。

但是,您可以向用户显示一条消息,警告他们即将离开该页面。

window.onbeforeunload = function(){
    return "Your message here";
};

当用户尝试离开页面(或刷新页面)并可以选择离开或停留在页面上时,系统会提示用户显示该消息。你不能完全阻止用户重新加载,但如果他们这样做,你可以让它听起来真的很可怕。

答案 1 :(得分:0)

您无法检查鼠标光标是否在URL上,但您可以检查光标是否位于[0,0]

位置
var cursorX;
var cursorY;
document.onmousemove = function(e){
    cursorX = e.pageX;
    cursorY = e.pageY;
}

$(document).on("keydown", function(e){
    if ((e.which || e.keyCode) == 116 && (cursorX == 0 && cursorY == 0))
        e.preventDefault();
});

如果cursorX和cursorY等于0,则阻止您的操作

答案 2 :(得分:0)

您可以使用 onmouseover 来跟踪鼠标何时在网址上,然后您可以使用 onmouseout 来跟踪它何时离开网址。请参阅以下示例。

<a onmouseover="overIsTrue()"
   onmouseout="overIsFalse() href="http://www.yourpage.com">here</a>

//keep track of the mouse state
var overURL = false;

window.addEventListener('keydown', function (event) {

    // if the key is 116 and the mouseover is true
    if (event.keyCode === 116 && overURL) {

        // prevent default behaviour
        event.preventDefault();

        return false;
    }

});

//mouse over is true
function overIsTrue() {
    overURL = true;
}

//mouse over is false
function overIsFalse() {
    overURL = false;
}