2013-04-20 25 views
5

Web sayfalarının birçoğu, arama için / anahtarını kullanıyor görünmektedir. Bunu devre dışı bırakmak istiyorum çünkü zamanın% 100'ünü kullanmak istiyorum: / Sayfayı FireFox'ta aramak için. GreaseMonkey veya dotjs ile bu davranışı geçersiz kılmanın bir yolu var mı?Tarayıcıya "/" anahtarını geri vermek için GreaseMonkey'i nasıl kullanabilirim?

bunun en kamusal örnek olacak, ayrıca https://wiki.jenkins-ci.org/display/JENKINS/Issue+Tracking

+0

Hangi "dotjs" kullanıyorsunuz? Bu isimde birden fazla şey var. Bunu da Chrome'da çalıştırmaya mı çalışıyorsunuz? –

cevap

3
  • üzerindeki bu Greasemonkey komut eser https://www.github.com/ olduğunu Sayfanın yapmaya çalıştığı şeyin% 99'unu yakalayın. keydown, keyup, keypress off sayfa yangınları veya bazı kombinasyonu keydown durdurmak böylece (tipik olay kullanılır) eğer

  • Sen emin olamaz (Flash gibi eklentileri saymazsak) ve keyup. Ancak, sayfa keypress'dan çıktığında, olayın engellenmesi this kind of technique gerektirebilir. Bunun nedeni, keypress olayının, <body>'da, Firefox'un sayfa içi aramasını tetiklemek için yukarı kalkmasıdır, ancak bu araştırmayı javascript'ten (güvenlik için) tetiklemenin bir yolu yoktur.

    Neyse ki, iki örnek siteniz herhangi bir sert önlem gerektirmez.

  • DOM_VK_SLASH gibi olay sabitleri mükemmeldir, ancak yine de oldukça fazla Firefox'turlar. Bu sorunun etiketlerinden (dotjs), Chrome'da da bunun için çalışmanızın gerekip gerekmediği net değil.

Hepsini bir araya getirirsek, bu tam komut çalışır:

// ==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(); 
    } 
} 

Not: Bu komut dosyası Chrome ve Firefox içinde, listelenen iki sitelerinde iyi iş gibi görünüyor. Ve, / yazarak girişleri veya metinleri yazmayı durdurmaz. Ancak, bazı sitelerin / anahtarındaki diğer olayları tetiklememesine neden olabilecek küçük bir şans var.

Bu olursa, blockSlashKey()'un işlemini kısıtlamak için zEvent.target.nodeName == "BODY" gibi denetimleri kullanın.

+0

Tamam, ben bir firefox kullanıcısıyım. FF'deki arama düğmesinden beri açık olacağını varsaydım, ancak kromda arama düğmesi CTRL-F'dir. Her neyse, ne yazık ki bu benim için hiç işe yaramıyor. Doğru şekilde ateşlenirken (fonksiyon gövdesine bir uyarı ekleyerek kontrol ettim), github'daki siteye özgü arama kutusuna odaklanmaktan vazgeçmiyor. FF'yi yeniden başlatacağım ve greasemonkey'in dotjs'den daha iyi çalışıp çalışmadığını göreceğim, ama şüpheliyim. (Ancak wiki için çalıştı! –

+0

Sadece greasemonkey'de çalışıyor gibi görünüyor, ama hey, her yerde çalışıyor! Ben dotjs adam bir hata dosya ama ben şimdi mutluyum :) –

+0

Çoğu kişi "dotjs" diyoruz Chrome için bir araçtır. Bu yüzden soruyordum. Kullandığınız "dotjs" e bağlarsanız, belki bir sorun görüyorum (söz yok). Ayrıca, Greasemonkey'deki etkinlik dinleyicilerine uyarı koymayın. İşleyiciyi kırma eğilimi gösterirler. Bunun yerine 'console.log()' işlevini kullanın. –

-1

, Firefox size window üzerinde addEventListener()Doc kurmak ve "olay yakalama" kullanırsanız

// ==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); 
+0

İlginç, dotjs ile çalışmıyor gibi görünüyor. Eğer yeterince erken dahil edilmeyen bazı garip yükleme sorunu varsa merak ediyorum ... –

+0

Tamam bu wiki üzerinde çalışır, ama github üzerinde değil mi? Github'un arama bölümünü görmek için giriş yapmış olmanız gerekmektedir. –

+0

Ayrıca github üzerinde çalışın, @include satırını fark ettiniz mi? Belki de senaryonu aktive etmek için daha fazlasını eklemelisin. – muzuiget

İlgili konular