劫持刷新键

问题描述:

问题劫持刷新键

你如何覆盖有自定义JavaScript函数刷新键?顺便说一句,我使用Prototype库。

为什么

我有一个就在身边的用户评论的视频。有一个按钮只能通过JS函数updateComments()刷新注释。在一些用户测试过程中,一些白痴拒绝使用该按钮来更新评论。相反,他们刷新了整个页面。这会导致视频重新启动,这是不可取的。我想覆盖F5键或CTRL + R来调用updateComments()而不是刷新页面。

+3

你不能做到这一点。那么,你*可能*能够抓住按键,但是你不能禁用浏览器按钮(至少,不可靠)。 – Pointy 2010-10-14 22:34:17

+1

您也无法禁用菜单项刷新/重新加载,或在我的朋友的完全自定义和重新映射的Firefox的奇怪组合。只要他们不能学习,就把这些人的电脑带走。刷新整个页面会重新启动我去过的每个网站上的视频,而不仅仅是您的视频。 – 2010-10-14 23:55:57

您将无法禁用浏览器按钮,这将违反一般UI体验。一种可能性是检查页面的加载方式,并向用户显示“请勿将其加载注释”。例如,谷歌浏览器,你可以检查页面已经被重新加载:

if (chrome.loadTimes().navigationType === 'Reload') { 
    alert('Please reload comments using the magic button'); 
} 

我不能肯定,如果其他浏览器也有可用的类似功能,但我怀疑它会在许多。

一般来说,在这种情况下,我的建议是改变你如何加载评论。例如,Twitter搜索将定期检查新的推文,然后显示一个“显示X多推文”按钮,用户可以按这些按钮来显示它们。

我认为你可以做的最好的事情就是给window.onbeforeunload事件添加一个处理程序。

事情是这样的:

function beforeUnload() { 
    if (videoIsPlaying) { 
     return "Are you sure you want to stop the video?"; 
    } 
} 
window.onbeforeunload = beforeUnload; 

的例子看看herehere