【问题标题】:trigger gmail inbox refresh with javascript使用 javascript 触发 gmail 收件箱刷新
【发布时间】:2015-10-29 11:01:08
【问题描述】:

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

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()

【问题讨论】:

    标签: javascript jquery gmail


    【解决方案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();
    

    尽管这可行,但我对此并不满意。主要是因为在阅读邮件线程时刷新按钮不可见。我正在向前迈出一步:我想知道如何触发附加到刷新按钮的功能(是的,trigger() 不起作用)而无需单击它。

    有什么想法吗?想法?

    【讨论】:

    • 嗨,Alberto,我认为在阅读电子邮件时让自己焕然一新是没有意义的,不是吗?
    • 如果您需要更新标签(我正在使用 Google API 修改标签)或者您需要它来加载任何已到达收件箱但尚未填充到收件箱中的邮件线程。
    猜你喜欢
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 2014-12-19
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多