使用javascript触发gmail收件箱刷新

时间:2015-10-29 11:01:09

标签: javascript jquery gmail

我正在尝试模拟收件箱上方的点击刷新按钮。 这是我目前的(不工作)脚本:

var $elem = $('div.T-I.J-J5-Ji.nu.T-I-ax7.L3'); //getting the "refresh" button
if ($elem.length > 0) {
      var event = new MouseEvent('click', {
        'view': window,
        'bubbles': true,
        'cancelable': true
      });

    $elem[0].dispatchEvent(event);
}

我还尝试在查询对象上使用trigger('click')click()

1 个答案:

答案 0 :(得分:1)

前段时间我遇到了同样的问题。出于某种原因,它需要关注按钮,并且只有在执行了keydown | mousedow然后执行keyup | mouseup之后事件才会出现。可悲的是,使用click()或任何其他JQuery事件触发器都不起作用。

我使用纯JS的解决方案:

function refreshDomNow() {
    var refreshButtons = $( 'div.T-I.J-J5-Ji.nu.T-I-ax7.L3' ),
        buttonsFounds = refreshButtons.length,
        visibleButton = 0,
        refreshed = false;

    if ( buttonsFounds > 0 ) {              // There should be at least one of these buttons
        for ( var i = 0; i < buttonsFounds; i++ ) {
            var currentButton = $(refreshButtons[i]);
            if ( currentButton.is(':visible') ) {
                var rButton = $(rButtonClass)[i];
                visibleButton++;

                //Trigger mouse down event
                var mouseDown = document.createEvent('MouseEvents');
                mouseDown.initEvent( 'mousedown', true, false );
                rButton.dispatchEvent(mouseDown);

                //Trigger mouse up event
                var mouseUp = document.createEvent('MouseEvents');
                mouseUp.initEvent( 'mouseup', true, false );
                rButton.dispatchEvent(mouseUp);     // This opens the composer

                refreshed = true;
            }   // End of IF currentButton.is(':visible')
        }       // End of FOR loop
    }           // End of IF buttonsFounds > 0

    return refreshed;
}               // End of refreshDomNow();

尽管这有效,但我对此并不满意。主要是因为在阅读邮件线程时,刷新按钮不可见。我正在寻找领先一步:我想知道怎么触发附加到刷新按钮的功能(是的,触发器()不起作用)而不需要点击它。

有什么想法吗?想法?