【问题标题】:hijack refresh key劫持刷新键
【发布时间】:2010-10-14 22:32:33
【问题描述】:

问题

如何使用自定义 javascript 函数覆盖刷新键?顺便说一句,我使用原型库。

为什么

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

【问题讨论】:

  • 你不能那样做。好吧,您可能能够获取密钥,但不能禁用浏览器按钮(至少,不可靠)。
  • 你也不能禁用菜单项来刷新/重新加载,或者我朋友完全自定义和重新映射的 Firefox 上的奇怪键组合。如果他们不能学习,就把那些人的电脑拿走。刷新整个页面会重新启动我去过的每个网站上的视频,而不仅仅是你的。

标签: javascript keyboard refresh


【解决方案1】:

您将无法禁用浏览器按钮,这会违反一般的 UI 体验。一种可能性是检查页面的加载方式并向用户显示“请不要这样做以加载 cmets”。例如,在 Google Chrome 中,您可以检查页面是否已重新加载:

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

我不确定其他浏览器是否有类似的功能可用,但我怀疑很多浏览器会有。

一般来说,在这种情况下,我的建议是更改加载 cmets 的方式。例如,Twitter 搜索会定期检查新推文,然后显示“显示 X 更多推文”按钮,用户可以按下该按钮来显示它们。

【讨论】:

    【解决方案2】:

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

    类似这样的:

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

    看看例子herehere

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-06
      • 2011-10-03
      • 2011-09-22
      相关资源
      最近更新 更多