代码之家  ›  专栏  ›  技术社区  ›  endolith

以编程方式登录/退出Gmail聊天,点击Gmail的“链接”栏

  •  0
  • endolith  · 技术社区  · 17 年前

    在工作中,我使用gmail的聊天功能,因为它是加密的,不需要安装或保存任何东西到硬盘就可以记录聊天。在家里,我用洋泾浜。当我在家登录gmail时,我必须退出聊天室,否则消息会出现在错误的地方。当我在工作中登录gmail时,我必须重新登录才能聊天。

    换句话说,当我在家启动firefox时,我希望gmail的聊天功能自动禁用。当我在工作中启动firefox时,我希望gmail的聊天功能能够自动启用。

    是否有方法使用Greasemonkey脚本或类似的脚本来强制在特定机器上登录和注销?这看起来很简单;只要跟随一个url或者模拟点击一个链接。不幸的是,Gmail没有使用实际的链接。

    注销时:

    <span tabindex="0" role="link" action="si" class="az9OKd">Sign into chat</span>
    

    登录时,在下拉菜单中:

    <div tabindex="-1" id=":1mj" role="menuitem" class="oA" value="si"><div class="uQ c6"/>Sign into chat</div>
    
    <div tabindex="-1" id=":8f" role="menuitem" class="oA" value="sia"><div class="uQ c5"/>Sign into AIM®</div>
    
    <div tabindex="-1" id=":8e" role="menuitem" class="oA" value="so"><div class="uQ df"/>Sign out of chat</div>
    

    在页面底部:

    <span id=":im" class="l8 ou" tabindex="0" role="link">turn off chat</span>
    
    <span id=":im" class="l8 ou" tabindex="0" role="link">turn on chat</span>
    

    有人知道如何用javascript“点击”这些非链接或访问它们的功能吗?我想“so”是指“sign out”,“si”是指“sign in”,“sia”是指“sign in aim”。我能不能直接把这些动作叫做?

    有没有其他方法可以禁用聊天?

    6 回复  |  直到 16 年前
        1
  •  2
  •   Brian Ramsay    17 年前

    我在gmail窗口和adium中都使用gmail聊天,当一个朋友发起聊天时,我在两个窗口中都会收到他或她的消息,所以在两个不同的地方登录不是问题。

    这对你不管用吗?

    编辑: 正如下面的注释者所说,您可以破译gmail的模糊javascript,尝试找出链接是如何附加到javascript函数的,以及调用了哪些函数。然后不需要模拟单击链接,只需要调用适当的javascript函数。

        2
  •  2
  •   KB.    16 年前

    我知道原来的帖子是旧的,但我在这里张贴供参考。

    var evt=document.createEvent(“鼠标事件”); evt.initmouseevent(“单击”,true,true,window, 0,0,0,0,0,假,假,假,假,0,空); YourElement.DispatchEvent(EVT);

    DispatchEvent引用自: https://developer.mozilla.org/en/DOM/element.dispatchEvent

        3
  •  1
  •   davewasthere    17 年前

    如果没有显示,人们还能和你聊天吗?

    我在gchat上只有几个联系人,所以不容易测试…

        window.addEventListener('load', function() {
      if (unsafeWindow.gmonkey) {
        unsafeWindow.gmonkey.load('1.0', function(gmail) {
          function logOffChat() {
            var leftPane = gmail.getNavPaneElement().childNodes[0];
            var chat = leftPane.childNodes[3];
    
            chat.id = 'googleChatElement';
        chat.parentNode.removeChild(chat);
          }
    
          logOffChat();
    
        });
      }
    }, true);
    

    我的猜测是,它仍然会在后台运行所有内容,而您将显示登录…

        4
  •  1
  •   Brian Ramsay    17 年前

    我不确定你是否知道,但你可以远程结束gmail会话。点击Gmail页面底部的链接:

    上次帐户活动:blah blah details

        5
  •  0
  •   endolith    17 年前

    添加 *chatenabled.mail.google.com* 到adblock的过滤器列表阻止gmail聊天连接。这将解决我的问题,即使我不知道如何点击“链接”。

        6
  •  -1
  •   Jey Geethan    17 年前

    可能是我不明白。但是你能试着用硒来解决这个问题吗?它是一个自动化web应用程序功能测试的框架。

    推荐文章