Я хочу нажать кнопку после небольшой задержки после того, как вкладка окажется в фокусе - PullRequest
0 голосов
/ 11 февраля 2012

Я хочу, чтобы функция setTimeout выполнялась, когда я выбрал [сфокусированную] вкладку.Я использую Mozilla (Greasemonkey).

Вот что я пробовал:

// ==UserScript==
// @name           [udit]click stumble button on pages
// @namespace      uditeewd
// @include        http://www.stumbleupon.com/interest/*
// @include        http://www.stumbleupon.com/channel/*
// @include        http://www.stumbleupon.com/stumbler/*
// @exclude        http://www.stumbleupon.com/stumbler/*/likes/interest*
// @exclude        http://www.stumbleupon.com/interest/*/followers*
// @exclude        http://www.stumbleupon.com/channel/*/followers*
// @exclude        file:///*
// ==/UserScript==

setTimeout(function(ButtonClickAction) {
var stumbButt   = document.querySelector ("div.stumbler-card a.stumble-button");
var clickEvent  = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
stumbButt.dispatchEvent (clickEvent);
}, 0);

document.addEventListener ("onfocus", ButtonClickAction, true);

Ответы [ 3 ]

1 голос
/ 11 февраля 2012

Разбить его на шаги:

  1. Вы хотите, чтобы фокус табуляции запускал таймер.
  2. Вы хотите, чтобы таймер нажал кнопку, когда придет время.

Обратите внимание, что вам нужно определить, какие узлы составляют "вкладку". Ваш текущий код фокусируется на всей странице.

Итак, код будет выглядеть примерно так:

var theTab  = document.querySelector (YOU NEED TO FIGURE THIS OUT, IT'S HIGHLY PAGE SPECIFIC);

theTab.addEventListener ("focus", FireClickDelay, true);

function FireClickDelay () {    
    setTimeout (ClickTheButton, 100);
}

function ClickTheButton () {    
    var stumbButt   = document.querySelector ("div.stumbler-card a.stumble-button");
    var clickEvent  = document.createEvent ('MouseEvents');
    clickEvent.initEvent ('click', true, true);
    stumbButt.dispatchEvent (clickEvent);
}
0 голосов
/ 05 апреля 2012

window.onblur и window.onfocus ?

(function(){
    var timer = null;
    var has_switched = false;

    window.onblur = function(){
      timer = settimeout(changeitup, 2000);
    }  

    window.onfocus = function(){
      if(timer) cleartimeout(timer);
    }

    function changeitup(){
        if( has_switched == false ){
            alert('hey! who switched tabs?')
            has_switched = true;    
        }
    }
})();
0 голосов
/ 13 февраля 2012
// ==UserScript==
// @name           [udit]click stumble button on pages
// @namespace      uditeewd
// @include        http://www.stumbleupon.com/interest/*
// @include        http://www.stumbleupon.com/channel/*
// @include        http://www.stumbleupon.com/stumbler/*
// @exclude        http://www.stumbleupon.com/stumbler/*/likes/interest*
// @exclude        http://www.stumbleupon.com/interest/*/followers*
// @exclude        http://www.stumbleupon.com/channel/*/followers*
// @exclude        file:///*
// ==/UserScript==

window.onfocus = function() {
    setTimeout (ClickTheButton, 0);
};

function ClickTheButton () {    
    var stumbButt   = document.querySelector ("div.stumbler-card a.stumble-button");
    var clickEvent  = document.createEvent ('MouseEvents');
    clickEvent.initEvent ('click', true, true);
    stumbButt.dispatchEvent (clickEvent);
}
...