禁用Safari 4的F5键(Disable F5 key in Safari 4)

2019-07-20 01:44发布

我写了下面的javascript代码赶上F5按键和防止令人耳目一新的用户:
(我知道这不是一个好主意,但我坚持这个任意一个是否喜欢还是不喜欢。而且这个问题我问是关于为什么下面的脚本不能与Safari 4的工作,但适用于其他浏览器。)

var fn = function (e)
{

    if (!e)
        var e = window.event;

    var keycode = e.keyCode;
    if (e.which)
        keycode = e.which;

    var src = e.srcElement;
    if (e.target)
        src = e.target;    

    // 116 = F5
    if (116 == keycode)
    {
        // Firefox and other non IE browsers
        if (e.preventDefault)
        {
            e.preventDefault();
            e.stopPropagation();
        }
        // Internet Explorer
        else if (e.keyCode)
        {
            e.keyCode = 0;
            e.returnValue = false;
            e.cancelBubble = true;
        }

        return false;
    }
}

// Assign function to onkeydown event
document.onkeydown = fn;

上面的代码完全适用于IE 6,7和8,从Firefox 2.0起以及在浏览器。 然而,它没有在Safari 4中工作了窗户。 按F5键刷新文件。 有趣的是,在Safari浏览器的代码,如果(e.preventDefault)部分内获得以上,但由于某种原因,其没有阻止默认动作即刷新页面。

这是Safari 4的一个bug或者是有一些野生动物园特定的代码,我需要写?

谢谢

Answer 1:

从来没有尝试任何事情妨碍用户的正常行动的浏览器。 即使你做到这一点使用JavaScript,他可以禁用脚本,然后继续刷新页面。

如果您需要防止刷新做出的行动,那么在服务器端处理。



Answer 2:

好像你正试图从做一些你的代码不能轻易处理妨碍用户,比如阻止他们的购买项目X'击中刷新,或者打你的网站往往通过举行F5惹恼你两次。

我建议其他的解决方案,如饼干/状态管理或阻止客户端IP地址,如果你是防止滥用。



Answer 3:

为了谁是说,“不这样做”的人:你是不是帮助。 总有一个侧情况下凭经验必须打破。

例如,我的工作在客户端有内置有掀起了第二个浏览器窗口,进入全屏,没有工具栏,书签,或任何其他选项窗口中的测试应用的一项重大的制度,并禁用所有按键不直接受测试环境。 在这种情况下,给用户,谁是低技术技能可能有人,才能够参加考试,而不会无意按F5并重装大,客户端的一系列问题,与所有他们以前删除的答案是有价值的。 这些问题是客户端,因为预加载允许测试要在低带宽连接上运行,就像那些在第三世界找到。

从我可以告诉的这个野生动物园唯一的问题(浏览器,另一种基于Webkit的浏览器,不存在这个问题),甚至警报框将不会从保持清爽的浏览器。 警报显示,页面刷新正常。

没什么我试过似乎要禁止的关键。 我已阅读,这被认为是与Safari浏览器的缺陷,而Safari浏览器的某些版本号应该包含一个解决方法,但由于时间我写这篇文章,这并没有在最新版本的Safari浏览器的实现视窗。 我已经在Mac上进行了测试,它似乎被固定在该平台上。



Answer 4:

+1到其他人说:“不这样做”。 这只是并不可行。 至少有刷新页面......在我的浏览器的许多其他方式:工具栏按钮*; CTRL-R; 右键单击重装; CTRL-T得到一个标签栏,然后单击鼠标右键,在标签重装; 等等。 告诉你的客户,这是不可能与真正有用的东西得到。

*:试图隐藏浏览器Chrome是还没有被我的浏览器允许的,因为它是一个非常糟糕的主意。 你被eliding,告诉用户,他们真的是在您的网站的基本指标,开放自己了网络钓鱼攻击。



Answer 5:

是的,这似乎是Safari 4的Windows中的一个错误。 你不能阻止CTRL + F无论是。

然而,打开警报停止它,但这是一个粗略的权衡。



Answer 6:

我有一个逻辑来处理类似question.I的F5正在显示一个确认框,询问“数据已输入可能无法保存?”。如果用户点击确定 ,页面重新载入,如果点击取消 ,页面需要保留原样。 但只有在野生动物园“ 取消 ”点击也重新加载页面。 我已在Safari 5.1.7进行测试。



文章来源: Disable F5 key in Safari 4