[英]How can I use GreaseMonkey to give the browser back the “/” key?
很多網頁似乎都使用/鍵進行搜索。 我想禁用它,因為100%的時間我想使用/在FireFox頁面中搜索。 有沒有辦法可以用GreaseMonkey或dotjs覆蓋這種行為?
最好的公開示例是https://www.github.com/ ,也是https://wiki.jenkins-ci.org/display/JENKINS/Issue+Tracking
如果在window
上設置addEventListener()
Doc並使用“事件捕獲”,則將捕獲頁面嘗試執行的99%。 (不包括像Flash這樣的插件)
您無法確定該頁面是否觸發了keydown
, keyup
, keypress
或某些組合,因此攔截了keydown
(使用的典型事件)和keyup
。 但是,如果頁面觸發了keypress
,那么阻止該事件可能需要這種技術 。 這是因為<body>
上的keypress
事件會觸發Firefox的頁內搜索,但是沒有辦法(重新)觸發javascript中的搜索(為了安全起見)。
幸運的是,您的兩個示例站點不需要任何嚴厲的措施。
像DOM_VK_SLASH
這樣的事件常量很棒,但它們仍然只有Firefox。 從這個問題的標簽(dotjs),你不清楚你是否也想在Chrome上工作。
總而言之,這個完整的腳本有效:
// ==UserScript==
// @name _Nuke the forward slash on select pages
// @include https://github.com/*
// @include https://wiki.jenkins-ci.org/*
// @grant GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
introduced in GM 1.0. It restores the sandbox.
*/
//-- "true" tells the listener to use capture mode.
window.addEventListener ('keydown', blockSlashKey, true);
window.addEventListener ('keyup', blockSlashKey, true);
/*-- Don't block keypress on window or body, this blocks the default
page-search, too.
window.addEventListener ('keypress', blockSlashKey, true);
*/
function blockSlashKey (zEvent) {
var FORWARD_SLASH = 191; // For keydown and keyup
var ASCII_SLASH = 47; // For keypress
if ( zEvent.which === FORWARD_SLASH
|| (zEvent.which === ASCII_SLASH && zEvent.type == "keypress")
) {
zEvent.stopPropagation();
}
}
注意:此腳本似乎適用於您列出的兩個網站,包括Chrome和Firefox。 並且,它不會停止輸入/輸入或textareas。 但是,它很可能會導致某些網站無法觸發/ key上的其他事件。
如果發生這種情況,那么使用zEvent.target.nodeName == "BODY"
類的檢查來限制blockSlashKey()
的操作。
這個Greasemonkey腳本適用於Firefox
// ==UserScript==
// @name Disable slash key on page
// @namespace test
// @include https://github.com/*
// @include https://wiki.jenkins-ci.org/*
// @grant none
// @version 1
// ==/UserScript==
document.addEventListener('keydown', function(event) {
if (event.keyCode === event.DOM_VK_SLASH) {
event.stopPropagation();
}
}, true);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.