如何更改Yahoo Mail,注销URL?

时间:2013-04-30 18:30:29

标签: javascript greasemonkey yahoo

这是我提出的代码(有许多外部帮助;我不熟悉JS):

setTimeout(function() {
   var logout = document.querySelector('a.yucs-signout'),
   link = "http://login.yahoo.com/config/login?logout=1&.src=cdgm&.intl=us&.direct=2&.done=http://ma
il.yahoo.com";
   logout.setAttribute ('onclick', 'location.href = 
\"' + link + '\"');
   logout.setAttribute ('href', link);
}, 17000)

我正在尝试更改Yahoo Mail上的注销网址,当点击“注销”下拉菜单项时,您将被重定向回Yahoo Mail登录页面 - 而不是yahoo.com“main页”。这样可以更轻松地使用其他帐户登录。

我们无法让它发挥作用。甚至在我的js运行太快的情况下为代码添加了超时。仍然没有。

我被告知“{= 1}}上的”= = yucs-submenu-toggle“没有CSS:hover表示正在使用javascript。”

退出控制截图:
Logout control screenshot

您必须将鼠标悬停在该部分上才能将菜单下拉到&请参阅退出

我还确保我的“包含页面”为https:<a id="yucs-menu_link_profile">

我正在尝试使用Greasemonkey,为什么它不起作用?

编辑:我当时认为this other answer可能有一些有用的东西,比如它中的jQuery内容?

1 个答案:

答案 0 :(得分:1)

  1. 如果问题中的代码是逐字复制的,那么它会因为制作不当的多行字符串而产生语法错误。
  2. 不要从用户脚本中设置onclick。永远!在这种情况下,无论如何都不需要任何形式的点击事件处理,并且可能会阻止页面的注销操作。
  3. 除此之外,该代码对我有用 - 至少在雅虎,英国,邮件上。

    还有一些小问题:

    1. 在这种情况下,您不需要setTimeout。
    2. 不要像这样强行链接;它可能并不总是有效。使用正则表达式手术更改done变量部分。

    3. 这是完整的工作脚本

      // ==UserScript==
      // @name        _Fix Yahoo mail logout
      // @include     http://mail.yahoo.com/*
      // @include     http://*.mail.yahoo.com/*
      // @include     https://mail.yahoo.com/*
      // @include     https://*.mail.yahoo.com/*
      // ==/UserScript==
      
      //-- Only run in the top page, not the various iframes.
      if (window.self === window.top) {
          var logout = document.querySelector ('a.yucs-signout');
          if (logout) {
              var link = logout.href.replace (
                  /&\.done=[^&#]+(&?)/, "&.done=http://mail.yahoo.com$1"
              );
              logout.href = link;
          }
          else
              console.error ("From GM script:  Node 'a.yucs-signout' not found.");
      }