在 YouTube 上禁用 Control-L 热键

在 YouTube 上禁用 Control-L 热键

我习惯使用Ctrll来访问我的地址栏。不幸的是,YouTube“有帮助地”定义了Ctrll一个热键,用于在当前播放的视频中向前跳几秒,所以我需要一种方法来阻止 YouTube 添加该键绑定。在页面加载后禁用绑定的 Greasemonkey/Scriptish 用户脚本是可以接受的。

需要说明的是,这种情况发生在我在 YouTube 视频页面上时,而不是在嵌入了 YouTube 视频的第三方网站上,并且这种行为发生在 Flash 播放器才不是有重点。

注意:我知道它的Altd作用与 Firefox 相同Ctrll,但我已经太习惯了Ctrll,而且我不想被迫切换。

编辑:由于我使用多个操作系统,因此特定于操作系统的解决方案不太可取;我更喜欢浏览器内的解决方案。

答案1

首先,这个漏洞早在 2001 年就存在了。或者更早。早在那时就有人报告过这个漏洞。

报告时间:2001-05-01 14:28 PDT

Mozilla 错误报告。这说明 Mozilla 不仅意识到了这一点,而且他们早就知道了。哦,我知道这似乎是一个更通用的错误报告,但是这个是更新的,并且更具体针对您的问题,并且被标记为我链接到您的第一个的重复。

话虽如此,代码用于禁用一些(大多数?)Youtube 键盘快捷键……但当视频放入网页时必须将其添加到嵌入的标签中。

&:disablekb=1

网上有很多网站传播这些信息,这里是只有一个。不幸的是,我认为如果这就像运行 Greasemonkey 脚本并在加载页面时将该代码添加到任何嵌入的 YouTUbe 视频标签一样简单,那么它早就完成了。由 Mozilla 的人完成。

现在,我花了一些时间研究 Firefox 的附加组件,并发现了一个名为 Stylish 的附加组件,它可以让您个性化您在 Youtube 等网站上的体验。我个人不知道,但根据定制级别以及它的具体功能,您可能能够让它注入代码。

有一些 Greasemonkey 脚本会改变你的 Youtube 体验像这个,但没有详细说明禁用键盘快捷键的功能。然而,要么是脚本的作者没有考虑到这一点,要么是从未有人向他们提出过这个建议。

答案2

最简单的解决方案是使用自动热键在 Firefox 上查看 YouTube 页面时,将Ctrl+映射LAlt+ :D

SetTitleMatchMode, RegEx
#IfWinActive, - YouTube - Mozilla Firefox$
    ^l::SendInput, !d
#IfWinActive

由于 YouTube 可能随时更改其 HTML<title>命名方案,因此更可靠的解决方案是将第一#IfWinActive行替换为:

#IfWinActive, - Mozilla Firefox$

这将适用于任何 Firefox 选项卡/窗口,但您不会注意到功能上的差异。

答案3

我遇到了同样的问题,并在http://www.autohotkey.com/用于 Windows 中 Firefox 的脚本。脚本控制 Firefox 处于活动状态时的 ctrl+tab、ctrl+shift+tab 和 ctrl+l 热键,并使它们始终执行常规 Firefox 热键操作(下一个选项卡、上一个选项卡和激活 URL 工具栏)。适用于窗口模式和全屏模式。注意:脚本鼠标单击 Firefox 窗口左上角附近的中性点。如果您已通过 Stylish 更改 GUI 以用按钮等覆盖该点,则可能需要修改 Click 命令的 x/y 值以定位其他非按钮点。如果您希望此脚本仅适用于 ctrl+l,请删除第二行和第三行代码。

编辑:抱歉,下面的默认 x/y 值可能在最大化窗口模式下无法正常工作,具体取决于您如何显示 Firefox 按钮。再次修改 x/y 以定位非按钮位置,例如 Firefox 按钮右侧几个像素。

#IfWinActive, ahk_class MozillaWindowClass
^Tab::
^+Tab::
^l::
SystemCursor("Toggle")
SetDefaultMouseSpeed, 0
MouseGetPos, mx, my
click 2,2
if A_ThisHotkey = ^Tab
 send ^{tab}
if A_ThisHotkey = ^+Tab
 send ^+{tab}
if A_ThisHotkey = ^l
 send ^l
MouseMove, %mx%,%my%
SystemCursor("Toggle")
return
#IfWinActive


; http://www.autohotkey.com/docs/commands/DllCall.htm#HideCursor

SystemCursor(OnOff=1)   ; INIT = "I","Init"; OFF = 0,"Off"; TOGGLE = -1,"T","Toggle"; ON = others
{
    static AndMask, XorMask, $, h_cursor
        ,c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13 ; system cursors
        , b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13   ; blank cursors
        , h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13   ; handles of default cursors
    if (OnOff = "Init" or OnOff = "I" or $ = "")       ; init when requested or at first call
    {
        $ = h                                          ; active default cursors
        VarSetCapacity( h_cursor,4444, 1 )
        VarSetCapacity( AndMask, 32*4, 0xFF )
        VarSetCapacity( XorMask, 32*4, 0 )
        system_cursors = 32512,32513,32514,32515,32516,32642,32643,32644,32645,32646,32648,32649,32650
        StringSplit c, system_cursors, `,
        Loop %c0%
        {
            h_cursor   := DllCall( "LoadCursor", "uint",0, "uint",c%A_Index% )
            h%A_Index% := DllCall( "CopyImage",  "uint",h_cursor, "uint",2, "int",0, "int",0, "uint",0 )
            b%A_Index% := DllCall("CreateCursor","uint",0, "int",0, "int",0
                , "int",32, "int",32, "uint",&AndMask, "uint",&XorMask )
        }
    }
    if (OnOff = 0 or OnOff = "Off" or $ = "h" and (OnOff < 0 or OnOff = "Toggle" or OnOff = "T"))
        $ = b  ; use blank cursors
    else
        $ = h  ; use the saved cursors

    Loop %c0%
    {
        h_cursor := DllCall( "CopyImage", "uint",%$%%A_Index%, "uint",2, "int",0, "int",0, "uint",0 )
        DllCall( "SetSystemCursor", "uint",h_cursor, "uint",c%A_Index% )
    }
}

答案4

经过更多测试后,我认为上述我的或 iglvzx 的 AHK 代码都无法完全解决问题,即使在 Windows 上的 Firefox 上也是如此。要重现剩余的问题,请执行以下步骤:

  1. 例如,加载 YouTube 剪辑http://www.youtube.com/watch?v=a1Y73sPHKxw
  2. 单击视频播放器中的任意位置,例如暂停按钮
  3. 按 tab 或 ctrl+tab 或 ctrl+l

结果:对于 ctrl+l 没有任何反应。对于 control+tab 播放器将焦点循环到下一个控件并用粗黄色边框标记它

当视频播放器获得焦点时,autohotkey 脚本似乎不会覆盖 youtube 对这些热键的控制。

相关内容