Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 收回'/';使用greasemonkey的google群组密钥_Javascript_Events_Dom_Greasemonkey - Fatal编程技术网

Javascript 收回'/';使用greasemonkey的google群组密钥

Javascript 收回'/';使用greasemonkey的google群组密钥,javascript,events,dom,greasemonkey,Javascript,Events,Dom,Greasemonkey,某些网站截取标准浏览器UI热键,这让我很恼火 我使用Firefox,当我按下正斜杠(“/”)时,我想搜索 当前选项卡中的文本。我不希望光标聚焦在屏幕上 谷歌在页面顶部的搜索框。下面是一个典型的冒犯页面: 我尝试过一些在其他网站上使用的油腻的技巧,比如 为keyup、keydown和keypress安装我自己的addEventListener(),如图所示 ,或替换prototype.addEventListener(),如图所示 下面是一些示例代码,我尝试使用后一种技术在所有div元素上取消所

某些网站截取标准浏览器UI热键,这让我很恼火

我使用Firefox,当我按下正斜杠(“/”)时,我想搜索 当前选项卡中的文本。我不希望光标聚焦在屏幕上 谷歌在页面顶部的搜索框。下面是一个典型的冒犯页面:

我尝试过一些在其他网站上使用的油腻的技巧,比如 为keyup、keydown和keypress安装我自己的addEventListener(),如图所示 ,或替换prototype.addEventListener(),如图所示

下面是一些示例代码,我尝试使用后一种技术在所有div元素上取消所有关键事件侦听器:

// ==UserScript==
// @description Stop google groups from highjacking the keyboard
// @include     http://groups.google.com/*
// @include     https://groups.google.com/*
// @run-at      document-start
// @grant       unsafeWindow
// ==/UserScript==

realHTMLDivElementAddEventListener = unsafeWindow.HTMLDivElement.prototype.addEventListener;
unsafeWindow.HTMLDivElement.prototype.addEventListener = function(a,b,c) {
  if ( a == 'keydown' || a == 'keyup' || a == 'keypress' ) {
    console.log("zapped: " + a);
    console.log("zapped:  this is id: " + this.id);
    console.log("zapped:  this is cl: " + this.className);
  } else {
    realHTMLDivElementAddEventListener(a,b,c);
  }
}
这捕获了一些事件监听器,但我们还是安装了数百个事件监听器。 在“加载”或“DOMContentLoaded”上解雇我的GM并没有什么帮助

事实上,我不确定它是否是一个需要清除的DIV元素(我还没去过) 当我击中“/”时,能够诱使萤火虫突破),但我很惊讶 上面的代码无法终止向DIV添加密钥事件列表器的所有尝试


谷歌是否找到了一种方法来规避Greasemonkey的威力?

如果我在上面添加
/@include/^https?:\/\/www.youtube\.com\/
,然后尝试,很遗憾,上面的方法不起作用。上面的内容也可以通过youtube进行增强吗?@T.Perkins,我不打算深入探讨。尽管如此,如果你是一个顽固的VIM用户,考虑使用Addion。谢谢Firefox bug @ ZANETU。我测试了VimOperator,它确实阻止了youtube窃取斜杠键,但它打开了自己的搜索对话框(不是原生的“查找栏”对话框)。这给了我一个想法,也许我可以写一个小插件,可以打开本机对话框。。。对于那些感兴趣的人来说,这个小插件修复了youtube(以及我尝试过的所有其他网站)的斜杠键问题:
// ==UserScript==
// @name         Google Groups Key Redemption
// @namespace    github.com/zanetu
// @version      0.1
// @description  Prevents Google Groups from intercepting browser hotkeys such as forward slash key. 
// @include      /^https?\:\/\/groups\.google\.com\//
// @author       zanetu
// @license      GPL version 2 or any later version; http://www.gnu.org/licenses/gpl-2.0.txt
// @grant        none
// @run-at       document-start
// ==/UserScript==

var ael = window.addEventListener
window.addEventListener = function(type) {'keypress' != type && ael.apply(this, arguments)}